Main Content

xcorr

説明

r = xcorr(x,y) は 2 つの離散時間列の相互相関を返します。相互相関は、ベクトル x と、ベクトル y のシフトされた (ラグのある) コピーとの間の類似度を、そのラグの関数として測定します。xy の長さが異なる場合、関数は短い方のベクトルの末尾にゼロを付加して、もう一方のベクトルと同じ長さにします。

r = xcorr(x) は、x の自己相関列を返します。x が行列の場合、r は、その列に x の列のすべての組み合わせに対する自己相関列と相互相関列を含む行列です。

r = xcorr(___,maxlag) は、前述の構文のいずれかに関して、ラグの範囲を -maxlag から maxlag までに制限します。

r = xcorr(___,scaleopt) は、相互相関または自己相関の正規化オプションも指定します。'none' (既定) 以外のオプションでは、xy の長さを同じにする必要があります。

[r,lags] = xcorr(___) は、相関の計算対象となるラグも返します。

すべて折りたたむ

ベクトル x と、右に 5 要素分シフトさせた x に等しいベクトル y を作成します。xy の推定される相互相関を計算してプロットします。xy の要素が厳密に (-5) に一致するときに、ラグ値で最大スパイクが発生します。

n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
[c,lags] = xcorr(x,y);
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

ベクトル x の推定される自己相関を計算してプロットします。x が厳密にそれ自体に一致するときに、ゼロ ラグで最大スパイクが発生します。

n = 0:15;
x = 0.84.^n;
[c,lags] = xcorr(x);
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

単位元でピークとなるベクトル xy の正規化された相互相関を計算してプロットし、最大ラグ 10 を指定します。

n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
[c,lags] = xcorr(x,y,10,'normalized');
stem(lags,c)

Figure contains an axes object. The axes object contains an object of type stem.

入力引数

すべて折りたたむ

入力配列。ベクトル、行列または多次元配列として指定します。x が多次元配列である場合、xcorr はすべての次元にわたって列方向に処理し、自己相関と相互相関をそれぞれ行列の列として返します。

データ型: single | double
複素数のサポート: あり

入力配列。ベクトルとして指定します。

データ型: single | double
複素数のサポート: あり

最大ラグ。整数値スカラーとして指定します。maxlag を指定した場合、返される相互相関列の範囲は -maxlag から maxlag までです。maxlag を指定しない場合、ラグの範囲は 2N – 1 です。ここで、N は xy の長さのうちの大きい方になります。

データ型: single | double

正規化オプション。以下のいずれかとして指定します。

  • 'none' — スケーリングされていない生データの相互相関。xy の長さが異なる場合、'none' は唯一有効なオプションです。

  • 'biased' — バイアスされた相互相関の推定。

    R^xy,biased(m)=1NR^xy(m).

  • 'unbiased' — バイアスされていない相互相関の推定。

    R^xy,unbiased(m)=1N|m|R^xy(m).

  • 'normalized' または 'coeff' — ゼロ ラグでの自己相関が 1 になるようにシーケンスを正規化。

    R^xy,coeff(m)=1R^xx(0)R^yy(0)R^xy(m).

出力引数

すべて折りたたむ

相互相関または自己相関。ベクトルまたは行列として返されます。

xM × N の行列である場合、xcorr(x)x の列の自己相関および相互相関をもつ (2M – 1) × N2 の行列を返します。maxlag を指定した場合、r のサイズは (2 × maxlag + 1) × N2 になります。

たとえば、S が 3 列、つまり、S=(x1x2x3) である場合、R = xcorr(S) の結果は次のように構成されます。

R=(Rx1x1Rx1x2Rx1x3Rx2x1Rx2x2Rx2x3Rx3x1Rx3x2Rx3x3).

ラグのインデックス。ベクトルとして返されます。

詳細

すべて折りたたむ

相互相関と自己相関

xcorr の結果は、2 つの乱数列間の相関の推定、あるいは確定的な 2 つの信号間の確定的な相関として解釈することができます。

共に定常的な 2 つのランダム過程 xn と yn の真の相互相関列は、次で求められます。

Rxy(m)=E{xn+myn*}=E{xnynm*},

ここで、−∞ < n < ∞ です。アスタリスクは複素共役を表し、E は期待値演算子です。実際には、無限長のランダム過程の 1 つで、実現のある有限部分しか使用できないため、xcorr はシーケンスのみを推定します。

既定では、xcorr では正規化を行わずに生データの相関が計算されます。

R^xy(m)={n=0Nm1xn+myn,m0,R^yx*(m),m<0.

出力ベクトル c の要素は次で与えられます。

c(m)=R^xy(mN),m=1,2,,2N1.

一般的には、正確な推定を行うために相関関数には正規化が必要です。入力引数 scaleopt を使用して、相関の正規化を制御できます。

参照

[1] Buck, John R., Michael M. Daniel, and Andrew C. Singer. Computer Explorations in Signals and Systems Using MATLAB®. 2nd Edition. Upper Saddle River, NJ: Prentice Hall, 2002.

[2] Stoica, Petre, and Randolph Moses. Spectral Analysis of Signals. Upper Saddle River, NJ: Prentice Hall, 2005.

拡張機能

参考

| | |