信号を計算power spectrum
しました。手順は次のとおりです。
- 時報のFFT
- FFT の絶対値の 2 乗/信号の長さ、つまりパワー スペクトル
これをタイムドメインに変換したいと思います。どのような手順に従う必要がありますか。
信号を計算power spectrum
しました。手順は次のとおりです。
これをタイムドメインに変換したいと思います。どのような手順に従う必要がありますか。
周波数領域から元の信号を再構成するには、振幅と位相の両方の情報が必要です。そのため、パワー スペクトルを計算して振幅のみを保持すると、元の信号を一意に再構築するために必要なすべての情報が得られなくなります。
つまり、異なる信号がまったく同じパワー スペクトルを持つ例を見つけることができます。その場合、これらの異なる信号のどれが元の信号であったかを取得することはできません。
簡単な例として、元の信号x
が次のようになっているとします。
x = [0.862209 0.43418 0.216947544 0.14497645];
y
議論のために、この例のために特別に作成した他の signal を考えてみましょう。
y = [-0.252234 -0.0835824 -0.826926341 -0.495571572];
次のプロットに示すように、これら 2 つの信号はまったく無関係に見える場合があります。
ただし、同じパワー スペクトルを共有します。
f = [0:N-1]/N;
Xf = fft(x,N);
Yf = fft(y,N);
hold off; plot(f, Xf.*conj(Xf)/N, 'b');
hold on; plot(f, Yf.*conj(Yf)/N, 'r:');
xlabel('Normalized frequency');
legend('Px', 'Py')
title('Power spectrum');
その結果、パワー スペクトルだけを見て、あなたが から始まったことを知らない人は、x
代わりに から始まったと推測することができますy
。
とはいえ、これらの信号のパワー スペクトルが同じであるという事実は、これらの信号が思っているほど無関係ではないことを示しています。実際、これらの信号も時間領域で同じ自己相関関数を共有しています。
Rx = xcorr(x);
Ry = xcorr(y);
t = [0:length(Rx)-1] - length(x) + 1;
hold off; stem(t, Rx, 'bo');
hold on; stem(t, Ry, 'rx');
legend('Rxx', 'Ryy');
xlabel('lag');
title('Autocorrelation');
自己相関は、パワー スペクトルの逆変換 ( ifftを使用) を計算することによって取得できるため、これは予想されることです。ただし、これは時間領域で回復できる程度です。この自己相関関数を持つ信号は、元の信号と同じくらい正確に推測できます。非常にやる気がある場合は、自己相関の定義から得られる一連の非線形方程式を解いて、可能な信号のリストを取得することを試みることができます。これだけではどちらがオリジナルかを判断するのに十分ではx
ありy
ません。