なぜ周波数スペクトルを求めるために FFT を使用した例題ではlength(x)で割ってスケール化するのですか?
8 views (last 30 days)
Show older comments
テクニカルノート 1702 では、単純なスペクトラム解析のプロットを求めるために FFT の使用方法が示されています。
FFT を半分にしたり、2 の倍数になるまでスケーリングすることは理解できますが、なぜ、ゼロパディングした信号のFFT出力を、下記のように、ゼロパッティングする前の信号の長さで割るのか理解できません。
mx = abs(fftx)/length(x);
Accepted Answer
MathWorks Support Team
on 29 Jun 2010
テクニカルノート 1702 の例題では、ゼロパディングした信号の FFT から、パディングする前の信号の振幅成分の特性を推定する方法について説明されています。
ゼロパディングした信号のFFTの結果からパディングする前の信号の特性を求める場合、取得したい特性によって正規化の手順が異なります。
1702 では、オリジナル信号の振幅値を正確に求める例題になっており、その後段では、単純に、その振幅の大きさの 2 乗を求めています。
一方、二乗平均平方根、つまり RMS (Root Mean Square) で正規化する場合、パーセヴァルの定理より、時間軸上の信号のパワーの総和(下記P1)と周波数軸上のパワーの総和(下記P2)が一致するように、下記 mx のように正規化する必要があります。
mx = abs(fftx)/sqrt(nfft*length(x));
下記で求まるオリジナルの信号内のパワー
P1 = sum(x.^2)/length(x);
と、
P2 = sum(mx);
が一致します。
なお、正規化の方法は一般的に幾つか提案されており、FFTの2乗の値を信号の長さで割るピリオドグラムや上記で挙げた RMSベースのパワースペクトルがあります。
下記の添付のファイルは、1702 と 上で述べた RMSベースのパワースペクトルのアプローチについて説明したサンプルファイルとなります。
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!