なぜ窓関数が必要か?

■信号列の打ち切り
FFT(フーリエ変換)は理論上、無限長の信号列を必要とします。
しかしながら現実的には無限長の信号列は取り扱いが難しため、
任意の有限長の信号列を取り出してフーリエ変換を行います。
(信号の打ち切りなどと表現されます。)

打ち切りを行った場合、
その部分が周期的に繰り返される信号列を
フーリエ変換していることと同意になります。
下図fig2は、fig1の31サンプルから64サンプルまでを取り出し、
かつ周期性を与えた波形となります。

この図で分かる通り打ち切り部分の波形が
滑らかでなく、不連続になっていることが確認できます。
この信号列でフーリエ変換を行うと、
不連続点の影響により期待するフリーエ変換結果が得られません。
そこでこの問題を解決するため窓関数が登場します。


■窓関数の目的
窓関数の目的を簡単に言いいますと、
"打ち切り部に近い値を徐々にゼロに近づけることで不連続点を滑らかにする"
ということになります。
上図fig3は、fig2の値にハニング窓係数をかけたものです。
打ち切り部分が段々とゼロに近くなり、滑らかにつながっています。

で、窓関数にはハミング、ハニング、ガウス等々いろいろな種類がありまして、
それぞれに特徴があります。
が、それはWikipediaの内容がスバラしいので
そちらを参照ください(手抜き)。

一応、以下にsiclabで関数でも使用できる
窓関数として代表的なハン、ハミング窓の式を示します。

■ハニング窓
w(x) = 0.5 - 0.5cos(2\pi x)

■ハミング窓
w(x) = 0.54 - 0.46cos(2\pi x)

  • xを16384ポイントとした場合の窓関数のグラフ
最終更新:2009年07月26日 18:12
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。