Main Content

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

位相遅れのある正弦波の相互相関

この例は、相互相関列を使用して、2 つの正弦波間の位相遅れを推定する方法を示しています。同じ周波数の 2 つの正弦波の理論上の相互相関列も、その周波数で振動します。サンプルの相互相関列は、より大きなラグではより少ないサンプルを使用するので、サンプルの相互相関列も同じ周波数で振動しますが、遅れが増加するにつれて振幅は減衰します。

周波数が 2π/10 ラジアン/サンプルの 2 つの正弦波を作成します。1 つの正弦波の開始位相は 0、他方の正弦波の開始位相は -π ラジアンです。N(0,0.252) ホワイト ノイズを π ラジアンの位相遅れを持つ正弦波に加算します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。

rng default

t = 0:99;
x = cos(2*pi*1/10*t);
y = cos(2*pi*1/10*t-pi)+0.25*randn(size(t));

正弦波 (10 サンプル) の 2 周期に対して、サンプルの相互相関列を求めます。相互相関列をプロットして、2 つの正弦波間の既知の遅れ (5 サンプル) をマークします。

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

stem(lags(21:end),xc(21:end),'filled')

hold on
plot([5 5],[-1 1])

ax = gca;
ax.XTick = 0:5:20;

相互相関列は、予想どおりラグ 5 で最大になっており、10 サンプルの周期で振動しています。

参考