窓関数
窓関数の最新ニュースをまとめて検索!
窓関数(まどかんすう、英: 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




































