FFT その6

FFTについてもう少し・・・
fft6.wxm

固有振動数f0の入力を40[Hz]に変更します(%o8)
固有振動数がf0 = 40[Hz]の正弦波をLoとして%o9式に示します


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


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111024/20111024081005.png
FFT関数にLwを渡した結果と周波数fで二次元配列を作成します(%o13)
これを横軸にf, 縦軸に振幅として%t14にプロットします
f0 > fmax なので振幅はすべて0になることを期待するんですが,結果は何故か24[Hz]が卓越しています(´・ω・`)?


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111024/20111024081004.png
24[Hz]の正弦波を%o15式にLaとして示します(位相を半波ずらしてます)
これらを横軸にt, 縦軸に振幅としてt = 0〜0.1[s]の間で%t14にそれぞれプロットします


これより元の波形(赤線)と謎の24[Hz]波形(紫線)のどちらもサンプル(青点)上を通っていることが解ります
なのでFFTから見ると紫線は赤線と区別できないことになります
これを折り返し雑音もしくはエイリアス(alias)と呼びます
エイリアスの周波数は fs - f0 = 64/1 - 40 = 24[Hz]で与えられます)


サンプリングを行う前にfmaxを超える周波数成分を予め除去することでエイリアスを抑制できます
こうしたローパスフィルタ等の処理を総じてアンチエイリアス(anti-aliasing)と呼びます