Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

2 つの移動平均過程の相互相関

この例は、2 つの移動平均過程間の相互相関列を求めてプロットする方法を示しています。この例では、サンプルの相互相関と理論上の相互相関を比較します。2 つの異なる移動平均フィルターで N(0,1) ホワイト ノイズ入力をフィルター処理します。サンプルと理論上のそれぞれの相互相関列をプロットします。

N(0,1) ホワイト ノイズ列を作成します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。2 つの移動平均フィルターを作成します。一方のフィルターはインパルス応答 δ(n)+δ(n-1) を持ちます。もう一方のフィルターはインパルス応答 δ(n)-δ(n-1) を持ちます。

rng default

w = randn(100,1);
x = filter([1 1],1,w);
y = filter([1 -1],1,w);

サンプルの相互相関列をラグ 20 まで取得します。サンプルの相互相関を理論上の相互相関と共にプロットします。

[xc,lags] = xcorr(x,y,20,'biased');

Xc = zeros(size(xc));
Xc(20) = -1;
Xc(22) = 1;

stem(lags,xc,'filled')
hold on
stem(lags,Xc,'.','linewidth',2)

q = legend('Sample cross-correlation','Theoretical cross-correlation');
q.Location = 'NorthWest';
q.FontSize = 9;
q.Box = 'off';

理論上の相互相関はラグ -1-1、ラグ 11、他のラグではすべて 0 です。サンプルの相互相関列は理論上の相互相関を近似しています。

予想どおり、理論上の相互相関とサンプルの相互相関との完全な一致はありません。ラグ -1 およびラグ 1 において、サンプルの相互相関は、符号および大きさの両方について理論上の相互相関列の値を正確に表しています。