• ベストアンサー

MATLABによるFFT

MATLABのfft関数を使用して,フーリエ変換してPSDを算出すると,スペクトルの周波数領域での積分値が元データの二乗平均値と一致しないのですが,原因は何が考えられるでしょうか?FFTの出力がフーリエ係数であれば一致するはずなのですが.

質問者が選んだベストアンサー

  • ベストアンサー
  • sinisorsa
  • ベストアンサー率44% (76/170)
回答No.3

FFTというのは、離散フーリエ変換(DFT)の算法の名前ですから、 DFTとして考えます。 DFTは X(k)=Σx(n)exp(-j2πkn/N) (和分の範囲は0~N-1) 時間領域の信号エネルギーと周波数領域の信号エネルギーは 比例関係にありますが、一致はしません。 DFTの点の数をNとすると、 Σ|x(n)|^2 = (1/N)Σ|X(k)|^2 (和分の範囲は0~N-1) となります。

munimulan
質問者

お礼

ありがとうございます. しかし,Nで割っても一致しないのです.

その他の回答 (2)

回答No.2

#1です。 間違ってますね・・。 そういえば、FFT長で割る必要があったような・・・・。

munimulan
質問者

お礼

ありがとうございます. FFT長で割っても一致しないのです.

回答No.1

手元にmatlabないので確認できないけど、 fft前後のエネルギーは一致したはずですよ。 s=randn(1000,1); Ps=sum(s.^2) h=fft(s); Ph=sum(abs(s)^2) 一致しません?