窓関数
出典: フリー百科事典『ウィキペディア(Wikipedia)』
窓関数(まどかんすう、英:window function)とは、ある有限区間以外で0となる関数である。 ある関数や信号(データ)に窓関数が掛け合わせられると、区間外は0になり、有限区間内だけが残るので、数値解析が容易になる。 窓関数は、スペクトル分析、フィルタ・デザインや、音声圧縮に応用される。 窓関数を単に窓 (window) ともいい、データに窓関数を掛け合わせることを窓を掛ける (windowing) という。
目次 |
[編集] 窓関数の意味
フーリエ変換は、区分的に 級な任意の関数 を、三角関数(あるいは指数関数)の線形結合で表す。 なお、 のフーリエ変換を で表す。
フーリエ変換では、関数 も三角関数も、無限区間 で定義されている。 しかし、実データを数値的にフーリエ変換するなら、無限の長さは扱えないので、有限区間 でフーリエ変換をおこない、区間外は無視することになる。 これは、関数 を区間外で0とみなすことに等しい(「区間内のデータを周期的に繰り返す」という表現をすることもあるが、DFT(離散フーリエ変換)のばあいはこの2つは等価である)。
つまり、関数 と関数
の積 を求め、そのフーリエ変換 を、 の代わりに得ていることになる。 このとき掛け合わせた関数 が窓関数である。
ここで定義した窓関数 (矩形窓という)でなくても、有限区間外が0で区間内が有界な関数ならば、窓関数として使える。 そこで、さまざまな窓関数が考案されている。 実際、上の矩形窓はあまり性能がよくない。それは、 にいちじるしい不連続があるからである。 実際に使われる窓関数のほとんどは、両端が滑らかに小さくなり区間外の0につながる、山形の関数である。
[編集] 窓関数の性能
窓関数を使って求めたスペクトル と、本来のスペクトル は、もちろん同じではない。 積のフーリエ変換はフーリエ変換の畳み込み、つまり、
である。 余分な が畳み込まれることによって、フーリエ変換の結果は変化するが、この変化は望ましいものではない。
一般に は、中心が絶対値が大きく、両側に離れるにつれ小さくなるが、0になることはない( が有限区間外で0ならば、常にそうなる)。 ただし、単峰性ではなく、図のように、無数の峰を持つ。 各々の峰をローブといい、中央のいちばん大きいローブをメインローブ、他をサイドローブという。このような が畳み込まれることにより、スペクトルは、ピークがなまり(周波数分解能が下がり)、ノイズ・フロアが上がる(ダイナミック・レンジが狭まる)ことになる。
窓関数には、
- メインローブが狭い(周波数分解能が良い)
- サイドローブが低い(ダイナミックレンジが広い)
という2つの特長が要求される。 しかし、この2つはトレード・オフの関係にあり、両立させるには限界がある。 そのため、ある状況では最適だった窓関数が、別の状況ではそうではないということも起こる。
[編集] 窓関数の応用
フーリエ変換に限らず、DCT(離散コサイン変換)や連続ウェーブレット変換でも、窓関数を使う。
とりわけ、近年、音声圧縮などに使われるMDCT(修正離散コサイン変換)のための窓関数は、プリンセン‐ブラッドリー条件 (Princen-Bradley condition) という、他の用途では要求されない性質が必要なこともあり、独特なものが新しく登場している。 なお、プリンセン‐ブラッドリー条件を満たす窓関数を、MDCT窓、プリンセン‐ブラッドリー窓などという。
スペクトル分析に限らず、無限系列を有限系列に断ち切らなければならない状況では、窓関数が使われる。たとえば、IIR(無限インパルス応答フィルタ)をFIR(有限インパルス応答フィルタ)で実現するときなどである。
変わった応用では、窓関数を掛けるのではなく、畳み込むという手法がある。 (畳み込みのフーリエ変換はフーリエ変換の積)なので、窓関数がデジタル・フィルタとして働くことになる。
[編集] 窓関数の例
特に断らない限り、区間を にとり、 と正規化した式を書く。 区間を にとる資料もある。 となる場合分けは省略した。 を適宜おぎなって読んでほしい。
離散化するには、 に対して、 と、 の2種類の方法があるが、特殊な用途を除き、どちらでも大差はない。また、初めから に対する関数 や系列 を表す資料もあるので、注意してほしい。
グラフは、 と離散化したときの、窓関数自身と、DFTで求めたパワースペクトルである。
[編集] 代表的な窓関数
[編集] 矩形窓
- rectangular window。方形窓とも。
- 単に有限長のデータを用意しただけのとき、暗黙のうちにこの窓関数を使っている。理論上、周波数分解能は最も良い。
[編集] ガウス窓
- Gauss window。ガウシアン窓 (Gaussian window) とも。
- 理論上、最も高性能な窓関数だが、コンパクト・サポートでない(有界区間の両端で0にならない)ので、実際には使えない。使うときは、適当な区間の外を0にする必要がある。主に、ガボール変換 (Gabor transform)や連続ウェーブレット変換で使われる。
[編集] ハン窓
- hann window(hannは人名由来だが、慣習的に小文字で書く)。フォンハン窓 (von Hann window)、2乗余弦窓、raised cosine windowとも。ユリウス・フォン・ハンが考案した。ハミング窓との連想から「ハニング窓」と呼ばれる例がある。
- 最もよく使われる窓関数の一つ。
[編集] ハミング窓
- hamming window(hammingは人名だが、慣習的に小文字で書く)。ハン窓の改良版として、リチャード・ハミングが考案した。
- ハン窓と並び、最もよく使われる窓関数の一つ。ハン窓より周波数分解能が良く、ダイナミック・レンジが狭い。区間の両端で不連続なのが特徴。
[編集] ブラックマン窓
- Blackman window。ラルフ・ブラックマンが考案した。
- ハン窓/ハミング窓より、周波数分解能が悪く、ダイナミック・レンジが広い。この種のフィルタの中では、最もよく使われる。
[編集] カイザー窓
- Kaiser window。カイザー‐ベッセル窓 (Kaiser‐Bessel window) ともいうが、後述のカイザー‐ベッセル派生窓と紛らわしい。J・F・カイザーが考案した。
- 実数パラメタ を持つ( をパラメタとすることもある)。 が大きいほど、ダイナミックレンジは広く、周波数分解能は悪くなる。2つの性能を連続的にトレード・オフできるのが特長である。周波数分解能はおおよそ に反比例する。
- では矩形窓と同じ。 ではハミニング窓に、 ではハン窓に、 ではブラックマン窓に似た形になる。
- 詳細はカイザー窓を見よ。
- ただし、 は第1種の0次の変形ベッセル関数。
[編集] バートレット窓
- Bartlett window。三角窓 (triangular window) とも。
- 教科書には必ず出てくるが、実際に使うことは少ない。
[編集] 指数窓
- exponential window。
- 減衰積分をおこなうとき、暗黙のうちにこの窓関数を使っている。コンパクト・サポートでないので、実際に使うときは適当な区間の外を0にする。左右非対称なので、エコー検出など、時間非対称な問題に使う。
[編集] その他の窓関数
[編集] 一般化ハミング窓
- ハン窓とハミング窓の一般化。実数パラメタ を持ち、 でハン窓、 でハミング窓、 で矩形窓になる。
[編集] バートレット‐ハン窓
- Bartlett‐Hann window。修正バートレット‐ハン窓 (modified Bartlett‐Hann window) とも。
- バートレット窓とハン窓の線形混合。異なる比率のものを使うこともある。
[編集] ナットール窓
- Nuttall window。
[編集] ブラックマン‐ハリス窓
- Blackman‐Harris window。
[編集] ブラックマン‐ナットール窓
- Blackman‐Nuttall window。
[編集] フラット・トップ窓
- flat top window。スペクトルのメインローブの頂部が平らであることから、こう呼ぶ。別の式で表される窓関数を「フラット・トップ窓」と呼ぶことがある。
[編集] パルザン窓
- Parzen window。
- ガウス窓の区分3次関数による近似。
[編集] 赤池窓
- Akaike window。
[編集] ウェルチ窓
- Welch window。
[編集] MDCT窓関数
MDCT(修正離散コサイン変換)の前処理に使う。 MDCTでの変数定義の慣習にしたがい、離散化には、 のデータ数を とした式
を用いることが多い。
[編集] サイン窓
- sine window。半波余弦窓 (half cycle sine window) とも。MP3など多くのフォーマットが使用。
[編集] Vorbis窓
- Vorbis window。Vorbisが使用。
[編集] カイザー‐ベッセル派生窓
- Kaiser‐Bessel derived window。KBD窓 (KBD window) とも。AC3やAACが使用。
- 詳細はカイザー-ベッセル派生 (KBD) 窓を見よ。
[編集] フィルタとして使う窓関数
[編集] ランツォシュ窓
- Lanczos window。ランツォシュ・フィルタとも。ランチョス窓などとも(誤りか)。Lanczosの発音については「現在のハンガリー領出身のユダヤ系ハンガリー人」も参照。
- 整数パラメタ を持つ。 の値によって、 次ランツォシュ窓、ランツォシュ 窓などと呼ぶ。
- データのデシメーション(画像縮小など)の前処理に、LPF(低域通過フィルタ)として使われる。
- ただし、 は正規化sinc関数。
[編集] 関連項目
[編集] 言語間リンク
- en:Window function (画像の出典)
[編集] 外部リンク
- 窓関数 (Window Function) - 井澤裕司
- フーリエ変換と窓関数 - 測定器玉手箱
- Windows - Paul Bourke
- Window Functions - Roger L. Easton, Jr.
- Ogg/Vorbis in embeded systems