窓関数
Kaiser‐Bessel derived window。KBD窓 (KBD window) とも。AC3やAACが使用。
詳細は「カイザー-ベッセル派生 (KBD) 窓」を参照
関数や信号に窓関数が掛け合わせられると、区間外は0になり、有限区間内だけが残るので、無限回の計算が不要になり数値解析が容易になる。窓関数は、データから成分を抽出するアルゴリズムの中核に当たり、スペクトル分析、フィルタ・デザインや、音声圧縮に応用される。データに窓関数を掛け合わせることを窓を掛ける (windowing) という。理論的に最良の結果が得られるSinc関数を利用するフィルタは無限回の計算(現実には不可能)を必要とするが、フィルタを有限回の計算だけで実現するために、周波数分解能とダイナミックレンジのトレードオフの中で様々な窓関数が考案されている。単に有限個のデータを用意しただけでも暗黙的に窓関数を掛けた事になる(矩形窓)。矩形窓の場合、周波数分解能は最良であるが、ダイナミックレンジは最悪で、データに含まれる成分がノイズに埋もれてしまい実用的でない。従って、改良された窓関数では各データに異なる重み付けを行って周波数分解能を多少犠牲にしてダイナミックレンジを改善している。
Welch window。
w ( x ) = 4 x ( 1 − x ) , if 0 ≤ x ≤ 1 {\displaystyle w(x)=4x(1-x),\ {\mbox{if }}0\leq x\leq 1}
Blackman window。ラルフ・ブラックマン(英語版)が考案した。
ハン窓/ハミング窓より、周波数分解能が悪く、ダイナミック・レンジが広い。この種のフィルタの中では、最もよく使われる。
w ( x ) = 0.42 − 0.5 cos  2 π x + 0.08 cos  4 π x , if 0 ≤ x ≤ 1 {\displaystyle w(x)=0.42-0.5\cos 2\pi x+0.08\cos 4\pi x,\ {\mbox{if }}0\leq x\leq 1}
Parzen window。
ガウス窓の区分3次関数による近似。
w ( x ) = { 1 − 1.5 x 2 + 0.75 | x | 3 , if | x | ≤ 1 0.25 ( 2 − | x | ) 3 , if 1 ≤ | x | ≤ 2 {\displaystyle w(x)={\begin{cases}1-1.5x^{2}+0.75|x|^{3},&{\mbox{if }}|x|\leq 1\\0.25(2-|x|)^{3},&{\mbox{if }}1\leq |x|\leq 2\end{cases}}}
ただし、単峰性ではなく、図のように、無数の峰を持つ。 各々の峰をローブといい、中央のいちばん大きいローブをメインローブ、他をサイドローブという。このような F w {\displaystyle {\mathfrak {F}}w} が畳み込まれることにより、スペクトルは、ピークがなまり(周波数分解能が下がり)、ノイズ・フロアが上がる(ダイナミック・レンジが狭まる)ことになる。
窓関数には、
メインローブが狭い(周波数分解能が良い)
サイドローブが低い(ダイナミックレンジが広い)
という2つの特長が要求される。 しかし、この2つはトレード・オフの関係にあり、両立させるには限界がある。 そのため、ある状況では最適だった窓関数が、別の状況ではそうではないということも起こる。
窓関数を使って求めたスペクトル F ( w f ) {\displaystyle {\mathfrak {F}}(wf)} と、本来のスペクトル F f {\displaystyle {\mathfrak {F}}f} は、もちろん同じではない。 積のフーリエ変換はフーリエ変換の畳み込み、つまり、
F ( w f ) = F w ∗ F f {\displaystyle {\mathfrak {F}}(wf)={\mathfrak {F}}w*{\mathfrak {F}}f}
である。 余分な F w {\displaystyle {\mathfrak {F}}w} が畳み込まれることによって、フーリエ変換の結果は変化するが、この変化は望ましいものではない。
一般に F w {\displaystyle {\mathfrak {F}}w} は、中心が絶対値が大きく、両側に離れるにつれ小さくなるが、0になることはない( w ( x ) {\displaystyle w(x)\,} が有限区間外で0ならば、常にそうなる)。