内容 | 
2次の相関
2次の相関
これはOriginProのみの機能です。
1. corr2 im1:=Mat(1) im2:=Mat(2);
2. corr2 im1:=Mat(1) im2:=Mat(2) norm:=1;
3. corr2 im1:=Mat(1) im2:=Mat(2) algorithm:=circular;
4. corr2 im1:=Mat(1) im2:=Mat(2) method:=shift;
| 表示 名  | 
変数 名  | 
I/O と データ型  | 
デフォルト 値  | 
説明 | 
|---|---|---|---|---|
| 入力行列1 | im1 | 
 入力 MatrixObject  | 
 <unassigned>  | 
 最初の2次元の入力信号を持つ行列を指定します。  | 
| 入力行列2 | im2 | 
 入力 MatrixObject  | 
 <unassigned>  | 
 2番目の2次元の入力信号を持つ行列を指定します。  | 
| 手法 | method | 
 入力 int  | 
 fft  | 
 2D相関を計算する方法を指定します。 オプションリスト 
  | 
| アルゴリズム | algorithm | 
 入力 int  | 
 linear  | 
 線形相関または循環相関を計算するかどうかを指定します。 オプションリスト 
  | 
| 規格化の結果 | norm | 
 入力 int  | 
 0  | 
 結果を規格化するかどうかを指定します。  | 
| 相関の結果 | om | 
 出力 MatrixObject  | 
 <新規>!<新規>  | 
 出力行列を指定します。  | 
2D相関は、 行列に保存されている2つの2D信号間の類似性を検出するのに使われる方法です。2つの行列、aおよびbの2D相関は次式で定義されます。
![]()
2D相関は線形または循環にすることができます。線形の相関では、元の範囲の外側にあるインデックス付きの要素は0として扱われます。それに対して循環の相関では、元の範囲内の要素の繰り返しで観測されます。線形相関の結果の行列の大きさは、
![]()
となります。ここで M および N は、それぞれ2つの行列の幅と高さになります。逆に、循環相関を計算する場合、行列の大きさは、
![]()
となります。通常、入力信号にインパルスが含まれる場合、線形相関が使われ、信号が周期的に表示される場合、循環相関が使われます。
計算した相関のマグニチュードは、信号がどの程度似ているかを示します。相関が大きい場合、2つの信号は大変よく似ていると考えられます。相関が0の場合、2つの信号は独立していると考えられます。
1. MBookSignalsという名前の行列の1番目のシートと2番目のシートにある信号の線形相関を計算するには、次のスクリプトコマンドを使います。
corr2 im1:=[MBookSignals]1!1 im2:= [MBookSignals]2!1
2. 2D相関の方法を変更するには、次のように入力し、corr2ダイアログを開き、オプションを選択します。
corr2 -d
3. 事前に保存したテーマファイルを使ってデータに2D相関を実行するには、corr2ダイアログで設定を保存し、保存したテーマのタイトルを使って、次のスクリプトコマンドを実行します。
corr2 -t "my two-d corelation theme.oth"
2D相関の計算には2つの方法  FFT および Shift-Accumulationがあります。Shift accumulationが選択されると、結果は相関の定義式を使って計算されます。FFTが選択されると、2D相関の計算は実際には次の手順で実行されます。
1. 両方の2D信号の離散フーリエ変換が2D FFTを使って計算されます。
2. 最初の信号のフーリエ係数と2番目の信号の共役係数の乗算が行われます。
3. 積に逆離散フーリエ変換を実行します。
一般的には、FFTの方法は大きなデータに対して高速に計算しますが、FFTの性質から境界に近いいくつかのデータポイントに対して正確さが失われます。
William H.Press, Brian P.Flannery, Saul A.Teukolsky, William T.Vetterling.1992.Numerical Recipes in C : The Art of Scientific Computing.Cambridge University Press.