FFT その5

今回はリーケージ対策(anti-leakage)として一般的に使われる窓関数(window function)のお話です
fft5.wxm

入力についてはFFT その3とまったく同様のため説明は割愛します(´・ω・`)


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111022/20111022090242.png
窓関数の中でも代表的なハニング窓(hanning window)の重み関数を%o11式に示します
重み付けしたサンプリングデータをLwに配列として代入します(%o12)
Lwとサンプリング時刻tで二次元配列Sを作成します(%o13)
元の波形を赤線,重み付けサンプリングデータを青点, 横軸にt, 縦軸に振幅として%t14にそれぞれプロットします


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111022/20111022090241.png
FFT関数にLwを渡した結果と周波数fで二次元配列を作成します(%o15)
比較のため,重み付けしていないLsの結果も作成します(%o16)
これらを横軸にf, 縦軸に振幅としてそれぞれ%t17にプロットします


これより,ハニング窓を適用した結果リーケージが抑えられていることが解ります


余談ですが,音声圧縮codecに使われている窓関数としては
mp3等に使われているサイン窓(sine window)
AC3やAACに使われているカイザー・ベッセル派生窓(Kaiser-Bessel derived window)が有名です