このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
位相遅れのある正弦波の相互相関
この例は、相互相関列を使用して、2 つの正弦波間の位相遅れを推定する方法を示しています。同じ周波数の 2 つの正弦波の理論上の相互相関列も、その周波数で振動します。サンプルの相互相関列は、より大きなラグではより少ないサンプルを使用するので、サンプルの相互相関列も同じ周波数で振動しますが、遅れが増加するにつれて振幅は減衰します。
周波数が ラジアン/サンプルの 2 つの正弦波を作成します。1 つの正弦波の開始位相は 0、他方の正弦波の開始位相は ラジアンです。 ホワイト ノイズを ラジアンの位相遅れをもつ正弦波に加算します。再現性のある結果を得るために、乱数発生器を既定の状態に設定します。
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 サンプルの周期で振動しています。