- 締切済み
FFT解析について
FFT解析について不明な点があります。 例えばf(t)=2sinωt という時間関数があったとします。 これをFFT解析してF(ω)-ωグラフにしたとします。この時、ω=ωに対してのみF(ω)という出力が得られると思うのですが、この時F(ω)はf(t)=2sinωtの振幅の2になるのでしょうか? フーリエ変換の式では、e^(-jωt)とf(t)を積分した値が、F(ω)になるので感覚的に考えても違うのかな と思っているのですが。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- uyama33
- ベストアンサー率30% (137/450)
N個の複素データ f(0),f(1),f(2),…,f(N-1) に対して、 N個の複素データ F(0),F(1),F(2),…,F(N-1) を次の様にして対応させるものです。 N-1 F(n)= Σ f(k)exp(-i2πnk/N) (n=0,1,2,…,N-1) k=0 この計算を実行するにはかなり時間がかかります。もし、Nが2の巾乗の形ならば、特別な工夫によって効率的に計算できます。この特別な場合のDFTを、 FFTとよびます。 DFTの意味について考えるには、連続的なデータに近い場合を考えると分りやすいでしょう。 1024個の数値 sin(2πk/1024) (k=0,1,2,…,1023) に対するFFTの結果を調べてみましょう。 N=1024 として計算すれば、 N-1 F(n)=Σsin(2πk/N)exp(-i2πnk/N) k=0 N-1 =(N/(2π))Σ [(2π/N)sin(2πk/N){cos(2πkn/N) - i・sin(2πkn/N)}] k=0 を計算しますが、n<<N の場合には積分で近似できて、 2π 2π F(n)=(N/(2π)){ sin x cos nx dx - i sin x sin nx dx} 0 0 となり、三角関数の直交性に注意して F(1) を計算すれば、 2π 2π F(1)=(N/(2π)){ sin x cos x dx - i sin x sin x dx} 0 0 2π F(1)=-(1024/(2π) i sin x sin x dx} 0 2π1-cos 2x F(1)=-(1024/(2π) i ・・・・・・ dx 0 2 =-512 i となります。 最初の数列が関数f(x)のサンプリングされたN個の値からなるとしましょう。 このf(x)が周期関数で有限和のフーリエ級数で表現できて、 t f(x)=(1/2)a0+Σ{amcos(x2πm/N) + bmsin(x2πm/N)} m=1 だとします。 n<t<<N の場合には、 t f(x)=(1/2)a0+Σ(amcos(x2πm/N) + bmsin(x2πm/N)) m=1 に対する FFT の結果については積分になおして、三角関数の直交性を使えば、 N-1 F(n)= Σ f(k)exp(-i2πnk/N) (n=0,1,2,…,N-1) k=0 N-1 t = Σ {(1/2)a0+Σ(amcos(k2πm/N) + bmsin(k2πm/N))}exp(-i2πnk/N) k=0 m=1 N-1 = Σ {ancos(k2πn/N)cos(k2πn/N) - i bnsin(k2πn/N))sin(k2πn/N))} k=0 N-1 =(N/(2π))Σ ancos(k2πn/N)cos(k2πn/N)(2π/N) k=0 N-1 -i(N/(2π))Σ bnsin(k2πn/N))sin(k2πn/N))(2π/N) k=0 2π =(N/(2π))an cos(nx)cos(nx)dx 0 2π -i(N/(2π))bn sin(nx)sin(nx)dx 0 =(N/2)(an - i bn) となるので、実部が cos波、虚部が sin波の存在を示し、しかもその係数の(N/2)倍になっていることが分ります。