相互相関
- 更新日2025-07-30
- 6分で読める
入力シーケンスXおよびYの相互相関を計算します。XおよびY入力にデータを配線して、使用する多態性インスタンスを決定するか、インスタンスを手動で選択します。

1D相互相関
シーケンスx(t)およびy(t)の相互相関Rxy(t)は、次の式で定義されます。

ここで、記号⊖は相関を表す。
「相互相関」VIの個別実行は以下のようになります。hは指標付けが負になり得るシーケンスを表し、Nは入力シーケンスXの要素数、MはシーケンスYの要素数とします。次の式で示されるとおり、その範囲外にあるXおよびYの指標付けされた要素が0であることを前提とします。
xj = 0, j < 0 または j ≥ Nおよび
yj = 0、 j < 0または j ≧ Mである。そして、「自己相関」VIは、次の式によってhの要素を求めます。

ここで、j = –(N–1), –(N–2), …, –1, 0, 1, …, (M–2), (M–1)
出力シーケンスRxyの要素は、次の式によってシーケンスhの要素と関連付けられます。
Rxyi = hi – (N–1)ここで、i = 0, 1, 2, … , N+M–2
LabVIEW配列は負の数値で指標付けできないため、t = 0のとき対応する相互相関は、出力シーケンスRxyのN番目の要素になります。したがって、Rxyは、「相互相関」VIが指標付けをN回シフトした相互値を表します。
以下のブロックダイアグラムは、「相互相関」VIを指標付けする1つの方法を示します。

以下のグラフは、上記のブロックダイアグラムの結果です。

相互相関の計算の精度を向上させるには、正規化が必要な場合もあります。このVIは、バイアスのある正規化とバイアスのない正規化を行います。
-
偏った正規化
正規化に 偏りがある場合、LabVIEWは以下のように偏った正規化を適用します:
Rxy(バイアスあり)j =
for j = 0, 1, 2, ... ,M+N-2
ここで、Rxy は正規化なしの x と y 間の相互相関です。
-
不偏正規化
正規化が 不偏である場合、LabVIEWは以下のように不偏正規化を適用します:
Rxy(バイアスなし)j =
for j = 0, 1, 2, ... ,M+N-2
ここで、 Rxy は正規化しない x と y の相互相関である。 f(j) は:

2D相互相関
「相互相関」VIは、以下のように、2次元の相互相関を計算します。

ここで、i = –(M1–1), … , –1, 0, 1, … , (M2–1)およびj = –(N1–1), … , –1, 0, 1, … , (N2–1)です。
また、M1 は行列 X の行数です。
N 1は行列 Xの列数、 M 2は行列 Yの行数、 N 2は行列 Yの列数、 Xと Yの 範囲外の添字要素は、以下の関係に示すように、0に等しくなる:x(m,n)=0、m<0または m ≧ M1 またはn<0または n ≧ N1
および
y(m,n) = 0, m < 0 または m≥ M2 または n < 0 または n≥ N2.
出力行列Rxyの要素は、以下のようにhの要素と関連付けられます。
i = 0, 1, 2, … , M1+M2–2 および j = 0, 1, 2, … , N1+N2–2 の場合、Rxy(I,j) = h(i–(M1–1), j–(N1–1))