1

Matlab を使用して処理したいデータに FFT を適用しました。結果の周波数は非常にノイズが多いため、周波数/振幅ベクトルに移動平均フィルターを適用しました。ここで、このフィルタリングされた周波数ドメイン データに基づいて時間ドメイン データを取得し、後でスペクトログラフで使用することに興味があります。

周波数/振幅成分を取得するために、Mathworks の例からこのコードを使用しました。

NFFT=2^nextpow2(L); 
A=fft(a,NFFT)/L; %a is the data
f=Fs/2*linspace(0,1,NFFT/2+1);

次を使用してプロットされます。

plot(f,2*abs(A(1:NFFT/2+1))

フィルタリングされた FFT の結果から時間領域データを取得する方法をお勧めできますか? 逆FFTが関係していますか?

どうもありがとうございました!

4

1 に答える 1

2

IFFT は FFT の逆です。頻度データを変更しない場合は、同じライブラリの ifft(fft(x)) から同じデータを取得する必要があります。

データを変更し、実数データを取得したい場合は、複素 FFT 結果の実数成分だけでなくすべての虚数成分をフィルター処理し、周波数領域データが依然として複素共役対称であることを確認してから、 IFFT。マグニチュードのみを使用すると、位相情報が破棄され、結果が大きく歪む可能性があります。

于 2012-05-17T20:29:32.217 に答える