データ平均値計算

Namespace: FVIL.Robust
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
public static double CalcAverage(
	IEnumerable<double> datas,
	double weight
)
Visual Basic
Public Shared Function CalcAverage ( 
	datas As IEnumerable(Of Double),
	weight As Double
) As Double

Parameters

datas
Type: System.Collections.Generic..::..IEnumerable<(Of <(<'Double>)>)>
データ群 (1点以上)
weight
Type: System..::..Double
重みの閾値 (与えられたデータのばらつきの標準偏差の1〜3倍程度が目安です)

Return Value

Type: Double
与えられたデータに対して、ロバスト推定法を使って平均値を算出します。

正常に実行できなかった場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。

エラーコード:

ErrorCode メンバ内容
51FVIL.ErrorCode.LICENSE_ERROR ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。
11FVIL.ErrorCode.INVALID_PARAMETERパラメータに誤りがあります。
29FVIL.ErrorCode.NOT_CALCULABLE計算不可能です。
1FVIL.ErrorCode.FAILED_TO_ALLOCATEメモリの確保に失敗しました。

Remarks

与えられたデータ(例えば濃度値やエッジの強さ等)に対して、ロバスト推定法を使って その平均値(つまり理論上の最適値)を算出します。

datas は平均値を計算するスカラデータ(例えば、濃度値など)です。1点以上の値を入力してください。 但し、ロバスト推定法は統計計算ですので平均値計算の精度を上げる為にはなるべく多くのデータを指定してください。

weight は下図における重みWのことです。weight の単位は datas パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、x座標がmmで与えられているなら weight もmmになります。 データのばらつきが大きいような場合は weight を小さくすることによって高い精度が得られるようになります。

しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、却って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1〜3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。

尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。

Exceptions

ExceptionCondition
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also