Location : Home > Languages > Perl > Package
Title : Math::VecStat
Toolbox Logo

名称

 Math::VecStat - ベクトルの演算


概要

use Math::VecStat qw(max min maxabs minabs sum average);

$max=max(@vector);
$max=max(\@vector);
($max,$imax)=max(@vector);
($max,$imax)=max(\@vector);
$min=min(@vector);
$min=min(\@vector);
($max,$imin)=min(@vector);
($max,$imin)=min(\@vector);
$max=maxabs(@vector);
$max=maxabs(\@vector);
($max,$imax)=maxabs(@vector);
($max,$imax)=maxabs(\@vector);
$min=minabs(@vector);
$min=minabs(\@vector);
($max,$imin)=minabs(@vector);
($max,$imin)=minabs(\@vector);

$sum=sum($v1,$v2,...);
$sum=sum(@vector);
$sum=sum(\@vector);

$average=average($v1,$v2,...);
$av=average(@vector);
$av=average(\@vector);

$ref=vecprod($scalar,\@vector);

$ok=ordered(@vector);
$ok=ordered(\@vector);

$ref=sumbyelement(\@vector1,\@vector2);
$ref=diffbyelement(\@vector1,\@vector2);

$ok=allequal(\@vector1,\@vector2);

$ref=convolute(\@vector1,\@vector2);

説明

 本パッケージは数値ベクトルに対するいくつかの基本的な統計量を与える。全てのサブルーチンは操作対象のベクトルへの参照を引数として取る。ベクトルのコピーでよい場合おあるが効率の観点からは推奨されない。

max(@vector), max(\@vector)

 所与の値またはベクトルの要素における最大値を返す。配列の文脈では最大値とその配列のインデクスを返す。

min(@vector), min(\@vector)

 所与の値またはベクトルの要素における最小値を返す。配列の文脈では最小値とその配列のインデクスを返す。

maxabs(@vector), maxabs(\@vector)

 所与の値またはベクトルの要素における絶対値の最大値を返す。配列の文脈では絶対値の最大値とその配列のインデクスを返す。

minabs(@vector), minabs(\@vector)

 所与の値またはベクトルの要素における絶対値の最小値を返す。配列の文脈では絶対値の最小値とその配列のインデクスを返す。

sum($v1,$v2,...), sum(@vector), sum(\@vector)

 所与の値またはベクトルの要素の総和を返す。

average($v1,$v2,..), average(@vector), average(\@vector)

 所与の値またはベクトルの要素の平均を返す。

vecprod($a,$v1,$v2,..), vecprod($a,@vector), vecprod( $a, \@vector )

 スカラー $a をベクトル @vector の各要素に乗じた値を返す。

ordered($v1,$v2,..), ordered(@vector), ordered(\@vector)

 ベクトルがそのインデクスについて非減少であれば非負の値を返す。例えば

if( ordered( $lowBound, $value, $highBound ) ){

 多少ぎこちないが以下のようにも書ける。

if( ($lowBound <= $value) && ($value <= $highBound) ) {

sumbyelement( \@array1, \@array2 ), diffbyelement(\@array1,\@array2)

 2つの同じ大きさのベクトルに対し、和または差を返す。例えば

$s = sumbyelement( [10,20,30], [1,2,3] );
$d = diffbyelement( [10,20,30], [1,2,3] );

であれば $s は [11,22,33] となり、$d は [9,18,27] となる。

allequal( \@array1, \@array2 )

 2つのベクトルが同一であれば、そのときに限り True を返す。

convolute( \@array1, \@array2 )

 2つの同じ大きさのベクトルに対し、対応する各要素同士の積を要素とするベクトルを返す。例えば

$r = convolute( [1,2,3], [-1,2,1] );

は以下のベクトルへの参照を返す。

[-1,4,3]

median

 メディアンを計算する。すなわち全体を2分する要素を返す。返り値は1つ目の要素がメディアン値で2つ目の要素が最初のベクトルにおけるインデクスであるようなリストへの参照である。

$a = Math::VecStat::median( [9,8,7,6,5,4,3,2,1] );

に対しては以下のリスト参照を返す。

[ 5, 4 ]

 すなわち、最初の配列の4番目の値がメディアン値でその値が5であることを示している。
 もしメディアン値となる要素が複数あれば、例えば [1,3,3,3,5] のような場合は、配列における最初の場所をメディアンに対応するインデクスとする。すなわち今の例では [3,1] を返す。


履歴


バグ

 知らせてほしい。本パッケージへの適切な追加を歓迎する。


著者

 John A.R. Williams, <J.A.R.Williams@aston.ac.uk>
 Andrea Spinelli, <spinellia@acm.org>

Toolbox Logo
Updated : 2006/10/18