「窓関数」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
ZéroBot (会話 | 投稿記録)
m r2.7.1) (ロボットによる 追加: nl:Vensterfunctie
Changing the raster image for a vector version.
65行目: 65行目:


====矩形窓====
====矩形窓====
[[ファイル:Window_function_(rectangular).png|thumb|矩形窓]]
[[ファイル:Window_function_(rectangular).svg|thumb|矩形窓]]
rectangular window。方形窓とも。
rectangular window。方形窓とも。


72行目: 72行目:


====ガウス窓====
====ガウス窓====
[[ファイル:Window_function_(gauss).png|thumb|ガウス窓]]
[[ファイル:Window_function_(gauss).svg|thumb|ガウス窓]]
Gauss window。ガウシアン窓 (Gaussian window) とも。
Gauss window。ガウシアン窓 (Gaussian window) とも。


79行目: 79行目:


====ハン窓====
====ハン窓====
[[ファイル:Window_function_(hann).png|thumb|ハン窓]]
[[ファイル:Window_function_(hann).svg|thumb|ハン窓]]
hann window(hannは人名由来だが、慣習的に小文字で書く)。フォンハン窓 (von Hann window)、2乗余弦窓、raised cosine windowとも。[[ユリウス・フォン・ハン]]<!--Julius Ferdinand von Hann-->が考案した。ハミング窓との連想から「ハニング窓」と呼ばれる例がある。
hann window(hannは人名由来だが、慣習的に小文字で書く)。フォンハン窓 (von Hann window)、2乗余弦窓、raised cosine windowとも。[[ユリウス・フォン・ハン]]<!--Julius Ferdinand von Hann-->が考案した。ハミング窓との連想から「ハニング窓」と呼ばれる例がある。


86行目: 86行目:


====ハミング窓====
====ハミング窓====
[[ファイル:Window_function_(hamming).png|thumb|ハミング窓]]
[[ファイル:Window_function_(hamming).svg|thumb|ハミング窓]]
hamming window(hammingは人名だが、慣習的に小文字で書く)。ハン窓の改良版として、[[リチャード・ハミング]]が考案した。
hamming window(hammingは人名だが、慣習的に小文字で書く)。ハン窓の改良版として、[[リチャード・ハミング]]が考案した。



2011年11月29日 (火) 19:11時点における版

窓関数(まどかんすう、: window function)とは、ある有限区間以外で0となる関数である。 ある関数や信号(データ)に窓関数が掛け合わせられると、区間外は0になり、有限区間内だけが残るので、数値解析が容易になる。 窓関数は、スペクトル分析フィルタ・デザインや、音声圧縮に応用される。 窓関数を単に (window) ともいい、データに窓関数を掛け合わせることを窓を掛ける (windowing) という。

窓関数の意味

フーリエ変換は、区分的に 級な任意の関数 を、三角関数(あるいは指数関数)の線形結合で表す。 なお、 のフーリエ変換を で表す。

フーリエ変換では、関数 も三角関数も、無限区間 で定義されている。 しかし、実データを数値的にフーリエ変換するなら、無限の長さは扱えないので、有限区間 でフーリエ変換をおこない、区間外は無視することになる。 これは、関数 を区間外で0とみなすことに等しい(「区間内のデータを周期的に繰り返す」という表現をすることもあるが、DFT(離散フーリエ変換)の場合はこの2つは等価である)。

つまり、関数 と関数

の積 を求め、そのフーリエ変換 を、 の代わりに得ていることになる。 このとき掛け合わせた関数 が窓関数である。

ここで定義した窓関数 (矩形窓という)でなくても、有限区間外が0で区間内が有界な関数ならば、窓関数として使える。 そこで、さまざまな窓関数が考案されている。 実際、上の矩形窓はあまり性能がよくない。それは、 にいちじるしい不連続があるからである。 実際に使われる窓関数のほとんどは、両端が滑らかに小さくなり区間外の0につながる、山形の関数である。

窓関数の性能

矩形窓のパワー・スペクトル
メインローブ及びサイドローブ

窓関数を使って求めたスペクトル と、本来のスペクトル は、もちろん同じではない。 積のフーリエ変換はフーリエ変換の畳み込み、つまり、

である。 余分な が畳み込まれることによって、フーリエ変換の結果は変化するが、この変化は望ましいものではない。

一般に は、中心が絶対値が大きく、両側に離れるにつれ小さくなるが、0になることはない( が有限区間外で0ならば、常にそうなる)。 ただし、単峰性ではなく、図のように、無数の峰を持つ。 各々の峰をローブといい、中央のいちばん大きいローブをメインローブ、他をサイドローブという。このような が畳み込まれることにより、スペクトルは、ピークがなまり(周波数分解能が下がり)、ノイズ・フロアが上がる(ダイナミック・レンジが狭まる)ことになる。

窓関数には、

  1. メインローブが狭い(周波数分解能が良い)
  2. サイドローブが低い(ダイナミックレンジが広い)

という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) とも。AC3AACが使用。

フィルタとして使う窓関数

ランツォシュ窓

Lanczos window。ランツォシュ・フィルタとも。ランチョス窓などとも(誤りか)。Lanczosの発音については「現在のハンガリー領出身のユダヤ系ハンガリー人」も参照。

整数パラメタ を持つ。 の値によって、 次ランツォシュ窓、ランツォシュ 窓などと呼ぶ。

データのデシメーション(画像縮小など)の前処理に、LPF(低域通過フィルタ)として使われる。

ただし、 は正規化sinc関数

関連項目

言語間リンク

外部リンク