使用頻度の高い API について,主要な内容を記述した, ビギナー向けのリファレンスマニュアルです.
SLLIB クラス: | ストリーム / 文字列 / 文字列配列 / 文字列連想配列 / 多次元配列 |
SLLIB クラス用関数: | 多次元配列用の統計用関数 / 多次元配列用の数学関数 / 多次元配列用の複素関数 |
SLLIB クラス以外: | 定数・型の定義 / C99互換の複素数・複素関数 |
SFITSIO クラス: | fitscc / fits_hdu / fits_image / fits_table / fits_table_col / fits_header / fits_header_record |
SFITSIO クラス以外: | 関数 / 定数・型の定義 / FITSファイルの部分読み出し機能 / FITSテンプレート / 規約外FITS拡張 |
多次元配列を扱うための
mdarray クラスとその継承クラス
では,配列に対して
LIBC の math.h
と同名の数学関数,
C99 の complex.h
と同名の複素関数,
統計用関数
を使う事ができます.
ヘッダファイル | namespace |
---|---|
#include <sli/mdarray_statistics.h> |
sli |
すべて inline 関数ですので, コードはヘッダファイルに記述されています. コードの検証や流用が簡単です.
歪度,尖度の算出には (N-1) で割る定義,N で割る定義があります.
引数 minus1
には,
前者の定義を使う場合には true
を,
後者の定義を使う場合には false
をセットしてください.
関数プロトタイプ | 機能 |
---|---|
double md_total( const mdarray &obj ); |
全要素の合計値を取得 |
mdarray md_total_x( const mdarray &obj ); |
x方向で合計値を計算し,x方向の長さが1の配列を取得 |
mdarray md_total_y( const mdarray &obj ); |
y方向で合計値を計算し,y方向の長さが1の配列を取得 |
mdarray md_total_z( const mdarray &obj ); |
z方向で合計値を計算し,z方向の長さが1の配列を取得 |
mdarray md_total_small_z( const mdarray &obj ); |
z方向で合計値を計算し,z方向の長さが1の配列を取得 (高速) |
double md_mean( const mdarray &obj ); |
全要素の平均値を取得 |
mdarray md_mean_x( const mdarray &obj ); |
x方向で平均値を計算し,x方向の長さが1の配列を取得 |
mdarray md_mean_y( const mdarray &obj ); |
y方向で平均値を計算し,y方向の長さが1の配列を取得 |
mdarray md_mean_z( const mdarray &obj ); |
z方向で平均値を計算し,z方向の長さが1の配列を取得 |
mdarray md_mean_small_z( const mdarray &obj ); |
z方向で平均値を計算し,z方向の長さが1の配列を取得 (高速) |
double md_meanabsdev( const mdarray &obj ); |
全要素の平均絶対偏差を取得 |
mdarray md_meanabsdev_x( const mdarray &obj ); |
x方向で平均絶対偏差を計算し,x方向の長さが1の配列を取得 |
mdarray md_meanabsdev_y( const mdarray &obj ); |
y方向で絶対平均偏差を計算し,y方向の長さが1の配列を取得 |
mdarray md_meanabsdev_z( const mdarray &obj ); |
z方向で絶対平均偏差を計算し,z方向の長さが1の配列を取得 |
double md_variance( const mdarray &obj ); |
全要素の分散を取得 |
mdarray md_variance_x( const mdarray &obj ); |
x方向で分散を計算し,x方向の長さが1の配列を取得 |
mdarray md_variance_y( const mdarray &obj ); |
y方向で分散を計算し,y方向の長さが1の配列を取得 |
mdarray md_variance_z( const mdarray &obj ); |
z方向で分散を計算し,z方向の長さが1の配列を取得 |
double md_skewness( const mdarray &obj, bool minus1 ); |
全要素の歪度を取得 |
mdarray md_skewness_x( const mdarray &obj, bool minus1 ); |
x方向で歪度を計算し,x方向の長さが1の配列を取得 |
mdarray md_skewness_y( const mdarray &obj, bool minus1 ); |
y方向で歪度を計算し,y方向の長さが1の配列を取得 |
mdarray md_skewness_z( const mdarray &obj, bool minus1 ); |
z方向で歪度を計算し,z方向の長さが1の配列を取得 |
double md_kurtosis( const mdarray &obj, bool minus1 ); |
全要素の尖度を取得 |
mdarray md_kurtosis_x( const mdarray &obj, bool minus1 ); |
x方向で尖度を計算し,x方向の長さが1の配列を取得 |
mdarray md_kurtosis_y( const mdarray &obj, bool minus1 ); |
y方向で尖度を計算し,y方向の長さが1の配列を取得 |
mdarray md_kurtosis_z( const mdarray &obj, bool minus1 ); |
z方向で尖度を計算し,z方向の長さが1の配列を取得 |
double md_stddev( const mdarray &obj ); |
全要素の標準偏差を取得 |
mdarray md_stddev_x( const mdarray &obj ); |
x方向で標準偏差を計算し,x方向の長さが1の配列を取得 |
mdarray md_stddev_y( const mdarray &obj ); |
y方向で標準偏差を計算し,y方向の長さが1の配列を取得 |
mdarray md_stddev_z( const mdarray &obj ); |
z方向で標準偏差を計算し,z方向の長さが1の配列を取得 |
mdarray md_stddev_small_z( const mdarray &obj ); |
z方向で標準偏差を計算し,z方向の長さが1の配列を取得 (高速) |
double md_min( const mdarray &obj ); |
全要素の最小値を取得 |
mdarray md_min_x( const mdarray &obj ); |
x方向で最小値を計算し,x方向の長さが1の配列を取得 |
mdarray md_min_y( const mdarray &obj ); |
y方向で最小値を計算し,y方向の長さが1の配列を取得 |
mdarray md_min_z( const mdarray &obj ); |
z方向で最小値を計算し,z方向の長さが1の配列を取得 |
mdarray md_min_small_z( const mdarray &obj ); |
z方向で最小値を計算し,z方向の長さが1の配列を取得 (高速) |
double md_max( const mdarray &obj ); |
全要素の最大値を取得 |
mdarray_double md_max_x( const mdarray &obj ); |
x方向で最大値を計算し,x方向の長さが1の配列を取得 |
mdarray_double md_max_y( const mdarray &obj ); |
y方向で最大値を計算し,y方向の長さが1の配列を取得 |
mdarray_double md_max_z( const mdarray &obj ); |
z方向で最大値を計算し,z方向の長さが1の配列を取得 |
mdarray_double md_max_small_z( const mdarray &obj ); |
z方向で最大値を計算し,z方向の長さが1の配列を取得 (高速) |
double md_median( const mdarray &obj ); |
全要素のmedian(本物)を取得 |
mdarray md_median_x( const mdarray &obj ); |
x方向でmedian(本物)を計算し,x方向の長さが1の配列を取得 |
mdarray md_median_y( const mdarray &obj ); |
y方向でmedian(本物)を計算し,y方向の長さが1の配列を取得 |
mdarray md_median_z( const mdarray &obj ); |
z方向でmedian(本物)を計算し,z方向の長さが1の配列を取得 |
mdarray md_median_small_z( const mdarray &obj ); |
z方向でmedian(本物)を計算し,z方向の長さが1の配列を取得 (高速) |
mdarray_double md_moment( const mdarray &obj, bool minus1, |
全要素の平均値,分散,歪度,尖度,平均絶対偏差,標準偏差を取得 |
mdarray_double md_moment( const mdarray &obj, bool minus1, double *ret_mdev, double *ret_sdev );
全要素の平均値,分散,歪度,尖度,平均絶対偏差,標準偏差を取得します.
歪度,尖度の算出には (N-1) で割る定義,N で割る定義があります.
引数 minus1
には,
前者の定義を使う場合には true
を,
後者の定義を使う場合には false
をセットしてください.
平均絶対偏差,標準偏差が必要な場合,それぞれ ret_mdev
,
ret_sdev
に変数のアドレスをセットしてください.
不要な場合は NULL
をセットする事もできます.
引数 minus1
が true
の時,統計値の定義は下記のとおりです.
(IRAFのマニュアルの引用):
mean = sum (x1,...,xN) / N y = x - mean meanabsdev = sum (abs(y1),...,abs(yN)) / N variance = sum (y1 ** 2,...,yN ** 2) / (N-1) stddev = sqrt (variance) skewness = sum ((y1 / stddev) ** 3,...,(yN / stddev) ** 3) / (N-1) kurtosis = sum ((y1 / stddev) ** 4,...,(yN / stddev) ** 4) / (N-1) - 3