FFT その3

前回に引き続き,今回は正弦波(単一の周波数成分のみの波形)をサンプリングしてみます
fft3.wxm

N, n, T : サンプリング数,周波数解像度, サンプリング時間[s]
dt, df : サンプリング間隔[s], 周波数分解能[Hz]
f0 : サンプリング元の波形の固有振動数[Hz]
Lo, Ls : サンプリング元の波形, サンプリングデータ(振幅の配列)
N, T, f0を%o3, 5, 8式にそれぞれ示します
固有振動数がf0の正弦波をLoとして%o9式に示します
サンプリング時間T[s], サンプリング間隔dt[s]でサンプリングした振幅を配列としてLsに代入します(%o9)


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111018/20111018193330.png
サンプリングデータを確認してみます
Lsとサンプリング時刻tで二次元配列Sを作成します(%o11)
元の波形を赤線,サンプリングデータを青点, 横軸にt, 縦軸に振幅として%t12にそれぞれプロットします


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111018/20111018194419.png
LsをFFTに渡した結果と周波数fで二次元配列を作成します(%o13)
これを横軸にf, 縦軸に振幅として%t14にプロットします


これより,f0 = 5.5Hz にピークが集中せず裾野が広がっていることが解ります
これをリーケージ(leakage)と呼びます
リーケージの生じる原因はサンプリング両端の繋がりの悪さです
FFTはサンプリングデータが繰り返し続くという前提で計算するため,繋がりの部分のギャップを拾ってしまうんです(´・ω・`)