窓関数(まどかんすう、英: window function)とは、ある有限区間(台)以外で0となる関数である[1]。窓 (まど、英: window) とも。 関数や信号に窓関数が掛け合わせられると、区間外は0になり、有限区間内だけが残るので、無限回の計算が不要になり数値解析が容易になる。窓関数は、データから成分を抽出するアルゴリズムの中核に当たり、スペクトル分析、フィルタ・デザインや、音声圧縮に応用される。データに窓関数を掛け合わせることを窓を掛ける (windowing) という。理論的に最良の結果が得られるSinc関数を利用するフィルタは無限回の計算(現実には不可能)を必要とするが、フィルタを有限回の計算だけで実現するために、周波数分解能とダイナミックレンジのトレードオフの中で様々な窓関数が考案されている。単に有限個のデータを用意しただけでも暗黙的に窓関数を掛けた事になる(矩形窓)。矩形窓の場合、周波数分解能は最良であるが、ダイナミックレンジは最悪で、データに含まれる成分がノイズに埋もれてしまい実用的でない。従って、改良された窓関数では各データに異なる重み付けを行って周波数分解能を多少犠牲にしてダイナミックレンジを改善している。 フーリエ変換は、区分的に C 1 {\displaystyle C^{1}\,} 級な任意の関数 f ( x ) {\displaystyle f(x)\,} を、三角関数(あるいは指数関数)の線形結合で表す。なお、 f {\displaystyle f\,} のフーリエ変換を F f {\displaystyle {\mathfrak {F}}f} で表す。 フーリエ変換では、関数 f ( x ) {\displaystyle f(x)\,} も三角関数も、無限区間 ( − ∞ , ∞ ) {\displaystyle (-\infty ,\infty )} で定義されている。しかし、実データを数値的にフーリエ変換するなら、無限の長さは扱えないので、有限区間 [ a , b ] {\displaystyle [a,b]\,} でフーリエ変換をおこない、区間外は無視することになる。これは、関数 f ( x ) {\displaystyle f(x)\,} を区間外で0とみなすことに等しい(「区間内のデータを周期的に繰り返す」という表現をすることもあるが、DFT(離散フーリエ変換)の場合はこの2つは等価である)。 つまり、関数 f ( x ) {\displaystyle f(x)\,} と関数 w ( x ) = { 1 , if a ≤ x ≤ b 0 , otherwise {\displaystyle w(x)={\begin{cases}1,&{\mbox{if }}a\leq x\leq b\\0,&{\mbox{otherwise}}\end{cases}}} の積 ( w f ) ( x ) = w ( x ) f ( x ) {\displaystyle (wf)(x)=w(x)f(x)\,} を求め、そのフーリエ変換 F ( w f ) {\displaystyle {\mathfrak {F}}(wf)} を、 F f {\displaystyle {\mathfrak {F}}f} の代わりに得ていることになる。このとき掛け合わせた関数 w ( x ) {\displaystyle w(x)\,} が窓関数である。 ここで定義した窓関数 w ( x ) {\displaystyle w(x)\,} (矩形窓という)でなくても、有限区間外が0で区間内が有界な関数ならば、窓関数として使える。そこで、さまざまな窓関数が考案されている。実際、上の矩形窓はあまり性能がよくない。それは、 x = a , b {\displaystyle x=a,b\,} にいちじるしい不連続があるからである。実際に使われる窓関数のほとんどは、両端が滑らかに小さくなり区間外の0につながる、山形の関数である。 窓関数を使って求めたスペクトル 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ならば、常にそうなる)。ただし、単峰性ではなく、図のように、無数の峰を持つ。各々の峰をローブといい、中央のいちばん大きいローブをメインローブ、他をサイドローブという。このような F w {\displaystyle {\mathfrak {F}}w} が畳み込まれることにより、スペクトルは、ピークがなまり(周波数分解能が下がり)、ノイズ・フロアが上がる(ダイナミック・レンジが狭まる)ことになる。 窓関数には、 という2つの特長が要求される。しかし、この2つはトレード・オフの関係にあり、両立させるには限界がある。そのため、ある状況では最適だった窓関数が、別の状況ではそうではないということも起こる。 周波数分解能とダイナミックレンジの概念は、窓関数の使用者が何を行おうしているかに依存しており、やや主観的な傾向がある。しかしながら、周波数分解能やダイナミックレンジは、定量化可能な全リーク[注釈 1]量と密接に関連する。リークは一般的に等価の帯域幅 B {\displaystyle B} として表される。リークについてDTFTによる長方形(高さはスペクトルの最大で幅は B {\displaystyle B} )への再分配を考えた場合、より多くのリークはより大きな帯域幅となる。入力信号がランダム・ノイズ成分を含んでいる(あるいは単にランダム・ノイズである)時、それぞれのDFTビンに含まれる平均電力に比例するため、この帯域幅は雑音等価帯域幅もしくは等価雑音帯域幅と呼ばれる。一定時間で平均化したパワースペクトルのグラフが一般的に水平なノイズフロアとして現れる現象は、この結果発生している。ノイズフロアの高さは B {\displaystyle B} に比例する。よって、2つの異なる窓関数では、異なるノイズフロアが発生する。 フーリエ変換に限らず、DCT(離散コサイン変換)や連続ウェーブレット変換でも、窓関数を使う。 とりわけ、近年、音声圧縮などに使われるMDCT(修正離散コサイン変換)のための窓関数は、プリンセン‐ブラッドリー条件 (Princen-Bradley condition) という、他の用途では要求されない性質が必要なこともあり、独特なものが新しく登場している。なお、プリンセン‐ブラッドリー条件を満たす窓関数を、MDCT窓、プリンセン‐ブラッドリー窓などという。 変わった応用では、窓関数を掛けるのではなく、畳み込むという手法がある。 F ( w ∗ f ) = F w F f {\displaystyle {\mathfrak {F}}(w*f)={\mathfrak {F}}w{\mathfrak {F}}f} (畳み込みのフーリエ変換はフーリエ変換の積)なので、窓関数がデジタル・フィルタとして働くことになる。 窓関数はデジタルフィルタのデザインにも用いられる。Sinc関数によって、理想的的な無限系列中のIIR(無限インパルス応答)のフィルター処理を有限系列中のFIR(有限インパルス応答)フィルター・デザインによる処理に変換する場合などがこれに該当する。これを window method と呼ぶ。[2][3] 特に断らない限り、区間を [ 0 , 1 ] {\displaystyle [0,1]\,} にとり、 max x w ( x ) = 1 {\displaystyle \max _{x}w(x)=1\,} と正規化した式を書く。区間を [ − 1 , 1 ] {\displaystyle [-1,1]\,} にとる資料もある。
概要
窓関数の意味
窓関数の性能矩形窓のパワー・スペクトルメインローブ及びサイドローブ
メインローブが狭い(周波数分解能が良い)
サイドローブが低い(ダイナミックレンジが広い)
雑音帯域幅
窓関数の応用
フィルター・デザイン詳細は「フィルター・デザイン(英語版
窓関数の例
Size:49 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef