窓関数

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:読み仮名はある有限区間)以外で0となる関数である[1]テンプレート:読み仮名とも。

概要

窓関数はある有限区間以外で0となる関数である[1](⇒ #定義)。窓は関数や信号に掛け合わせて適用されることが主であり、これにより関数の有限区間のみを切り出す(⇒ #窓掛け)。様々な数学的変換のなかに登場し(⇒ #利用)、応用数学工学への応用範囲も広い(⇒ #応用)。窓関数の性能はその周波数スペクトルを用いて議論されることが多く(⇒ #性能)、目的に応じた様々な性能の窓関数が提唱されている(⇒ #例)。

定義

実数 a, b と任意の関数 g(x) を用いて窓関数 w(x) は次のように定義される[1]テンプレート:Indent

窓掛け

テンプレート:読み仮名は関数や信号に窓関数を掛けることである。

窓掛けは時間領域において関数と窓関数の要素積である。すなわち窓関数 w(x) は関数 f(x) に以下の形で適用される:テンプレート:Indent

窓掛けの効果

時間領域の窓掛け効果

時間領域において窓掛けは関数の区間切り出しという効果を持つ。

w(x) はその定義から有限区間 axb でのみ非ゼロの値を取りそれ以外では 0 である[1]窓掛けは関数と窓の要素積であるから、関数 f(x) を窓掛けして得た関数 y(x) もまた有限区間 axb でのみ非ゼロの値を取りそれ以外では 0 である。つまり以下の式を満たす:テンプレート:Indentこれは関数のある有限区間を(フェードイン/フェードアウトしながら)切り出す効果と理解できる。切り出し(= 区間外 0 保証)により、信号の特定時刻周辺における特性解析(参考: 音声分析#短時間分析)や、無限区間関数における積分の正しい計算打ち切りを可能にする。

周波数領域の窓掛け効果

周波数領域において窓掛けは意味を持つ。

窓掛けされた関数 wf周波数スペクトル 𝔉(wf) と関数本来のスペクトル 𝔉f は同じではない。積のフーリエ変換はフーリエ変換の畳み込み、つまり、テンプレート:Indent である。余分な 𝔉w が畳み込まれることによって、フーリエ変換の結果は変化するが、この変化は望ましいものではない。

性能

テンプレート:出典の明記

窓関数スペクトルの特性

窓関数 w の性能はその周波数スペクトル 𝔉w を用いてしばしば議論される。これは窓関数が窓掛けの形で適用されることが殆どであり、窓掛けが関数の周波数特性へ影響するからである(⇒ #周波数領域の窓掛け効果)。

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

窓関数には以下の2つの特性が要求される:

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

しかしこの2つはトレード・オフの関係にある。そのため窓関数の性能の良し悪しは用途に依存する。

雑音帯域幅

周波数分解能ダイナミックレンジの概念は、窓関数の使用者が何を行おうしているかに依存しており、やや主観的な傾向がある。しかしながら、周波数分解能ダイナミックレンジは、定量化可能な全リーク[注釈 1]量と密接に関連する。リークは一般的に等価の帯域幅 B として表される。リークについてDTFTによる長方形(高さはスペクトルの最大で幅は B )への再分配を考えた場合、より多くのリークはより大きな帯域幅となる。入力信号がランダム・ノイズ成分を含む時、それぞれのDFTビンに含まれる平均電力に比例するため、この帯域幅は雑音等価帯域幅もしくは等価雑音帯域幅と呼ばれる。一定時間で平均化したパワースペクトルのグラフが一般的に水平なノイズフロアとして現れる現象は、この結果発生している。ノイズフロアの高さは B に比例する。よって、2つの異なる窓関数では、異なるノイズフロアが発生する。

利用

窓関数は様々な数学的変換のなかで利用される。以下はその一例である:

変わった利用では、窓関数を畳み込むという手法がある。𝔉(w*f)=𝔉w𝔉f(畳み込みのフーリエ変換はフーリエ変換の積)なので、窓関数がデジタルフィルタとして働く。

フーリエ変換

フーリエ変換では関数と三角関数が無限区間 (,) で値を取る。しかしフーリエ変換を数値計算する場合、無限長を扱えないため、有限区間 [a,b] でフーリエ変換をおこなって区間外は無視する。これは関数 f(x) を区間外で0とみなすことに等しい(「区間内のデータを周期的に繰り返す」という表現をすることもあるが、DFT(離散フーリエ変換)の場合はこの2つは等価である)。これは数学的に矩形窓による窓掛けと同義である。

応用

窓関数は応用数学工学で広く応用される。以下はその一例である:

フィルタデザイン

テンプレート:Main 窓関数はデジタルフィルタのデザインに応用される。一例として、Sinc関数により理想的的な無限系列中のIIRフィルタ処理を有限系列中のFIRフィルタ処理に変換する(window method[3][4]

特に断らない限り、本節では窓関数 w(x) について以下の表現を採用する:

  • 台区間: [0,1]
  • 正規化: maxxw(x)=1
  • 場合分け: 台の外側「w(x)=0, otherwise」を省略

なお、他の文献では区間 [1,1][0.5,0.5][注釈 4] を採用する場合もある。離散化するには、k=0,,N1 に対して、x=k/(N1) と、x=(k+0.5)/N の2種類の方法があるが、特殊な用途を除き、どちらでも大差はない。また、初めから k に対する関数 w(k) や系列 wk を表す資料もあるので、注意してほしい。グラフは、x=k/(N1) と離散化したときの、窓関数自身と、DFTで求めたパワースペクトルである。

表. 窓関数の比較
名称 w(x)
三角関数系
サイン窓 sinπx
Vorbis窓 sin(0.5πsin2πx)
一般化ハミング窓 a(1a)cos2πx[注釈 5]
矩形窓  (a=1 1[注釈 5]
ハン窓  (a=0.50 0.500.50cos2πx
ハミング窓a=0.54 0.540.46cos2πx[注釈 5]
ブラックマン窓 0.4200.5cos2πx+0.080cos4πx
赤池窓 0.6250.5cos2πx0.125cos4πx
ナットール窓 0.35576800.4873960cos2πx+0.1442320cos4πx0.0126040cos6πx
ブラックマン‐ハリス窓 0.35875000.4882900cos2πx+0.1412800cos4πx0.0116800cos6πx
ブラックマン‐ナットール窓 0.36358190.4891775cos2πx+0.1365995cos4πx0.0106411cos6πx
フラット・トップ窓 11.93cos2πx+1.29cos4πx0.388cos6πx+0.032cos8πx
バートレット‐ハン窓 0.620.48|x0.5|0.38cos2πx
テューキー窓
多項式系
バートレット窓 12|x0.5|
ウェルチ窓 4x(1x)
パルザン窓 {11.5x2+0.75|x|3,if |x|10.25(2|x|)3,if 1|x|2
MDCT窓関数
パラメータ系
カイザー窓
ガウス窓 exp((x0.5)2/σ2)[注釈 5]
指数窓 exp(x/T)[注釈 5]

矩形窓

矩形窓

テンプレート:読み仮名テンプレート:読み仮名とも。

単に有限長のデータを用意しただけのとき、暗黙のうちにこの窓関数を使っている。理論上、周波数分解能は最も良い。一方で x=0,1 にいちじるしい不連続があり、時間領域での信号飛び、周波数特性での高いサイドローブ(=低ダイナミックレンジ)の所以となっている。

ガウス窓

ガウス窓

Gauss window。ガウシアン窓 (Gaussian window) とも。

ガウス関数のフーリエ変換は再びガウス関数になる(フーリエ変換の固有関数である)。ガウス関数は無限に広がるため、実用上必要な長さまでで計算を打ち切る必要がある。無限に広がる窓関数を不連続に打ち切った場合、矩形窓を掛けた事になり、通過帯域と阻止帯域にリップルが発生し、サイドローブも大きく上昇する。主に、ガボール変換 (Gabor transform)や連続ウェーブレット変換で使われる。

ハン窓

ハン窓

テンプレート:Main テンプレート:読み仮名[注釈 6]テンプレート:読み仮名テンプレート:要出典範囲テンプレート:要出典範囲とも。

テンプレート:仮リンクが考案した。テンプレート:要出典範囲。ハン窓及び後述のハミング窓は、後の研究で後述する一つの関数族「一般化ハミング窓("raised cosine" または "generalized Hamming" 窓)」に分類されたため、ハン(Han)とハミング(Hamming)両名の名前から合成された「ハニング窓(hanning window)」という呼び方でハン窓を指す場合もある。

ハミング窓

ハミング窓

テンプレート:読み仮名[注釈 7]

ハン窓の改良版として、リチャード・ハミングが考案した。テンプレート:要出典範囲。ハン窓より周波数分解能が良く、ダイナミック・レンジが狭い。区間の両端で不連続なのが特徴。

テューキー窓

ジョン・テューキーが考案した。コサイン関数を用いて以下のように表される[5]

w(x)={1,xLx2xw1212cos(π(xLx2)xw),Lx2xw<x<Lx20,x>Lx2

ここでxw は窓の幅である。

ブラックマン窓

ブラックマン窓

テンプレート:読み仮名

テンプレート:仮リンクが考案した。テンプレート:要出典範囲。ハン窓/ハミング窓より、周波数分解能が悪く、ダイナミック・レンジが広い。

カイザー窓

カイザー窓、α=2
カイザー窓、α=3

テンプレート:Main Kaiser window。カイザー‐ベッセル窓 (Kaiser‐Bessel window) ともいうが、後述のカイザー‐ベッセル派生窓と紛らわしい。J・F・カイザーが考案した。

柔軟な特性変更ができるためデジタル信号処理において良く用いられる。

実数パラメタ α0 を持つ( β=πα をパラメタとすることもある)。αが0であれば矩形窓そのものである。αを大きくするほどD/A変換の理論上において最も理想的な特性を持つガウス窓への近似度を高めることができ、周波数分解能が悪くなる代わりにダイナミックレンジが広くなる。αの調節だけで2種類の窓関数の特性の間を連続的に推移できるのが最大の特長である。周波数分解能はおおよそ α に反比例する。

α=0 では矩形窓と同じ。α=1.5 ではハミニング窓に、α=2 ではハン窓に、α=3 ではブラックマン窓に似た形になる。

  • w(x)=I0{πα1(2x1)2}I0(πα)

ただし、I0 は第1種の0次の変形ベッセル関数テンプレート:Clear

バートレット窓

バートレット窓

Bartlett window。三角窓 (triangular window) とも。

教科書には必ず出てくるが、実際に使うことは少ない。

指数窓

exponential window。

減衰積分をおこなうとき、暗黙のうちにこの窓関数を使っている。コンパクト・サポートでないので、実際に使うときは適当な区間の外を0にする。左右非対称なので、エコー検出など、時間非対称な問題に使う。

  • w(x)=expxT

一般化ハミング窓

ハン窓とハミング窓の一般化。実数パラメタ a, 0.5a1 を持ち、a=0.5 でハン窓、a=0.54 でハミング窓、a=1 で矩形窓になる。

  • w(x)=a(1a)cos2πx

バートレット‐ハン窓

バートレット‐ハン窓

Bartlett‐Hann window。修正バートレット‐ハン窓 (modified Bartlett‐Hann window) とも。

バートレット窓とハン窓の線形混合。異なる比率のものを使うこともある。

ナットール窓

ナットール窓

テンプレート:読み仮名

ブラックマン‐ハリス窓

ブラックマン‐ハリス窓

Blackman‐Harris window。

ブラックマン‐ナットール窓

ブラックマン‐ナットール窓

テンプレート:読み仮名

フラット・トップ窓

フラット・トップ窓

テンプレート:読み仮名

スペクトルのメインローブの頂部が平らであることから、こう呼ぶ。別の式で表される窓関数を「フラット・トップ窓」と呼ぶことがある。

パルザン窓

Parzen window。

ガウス窓の区分3次関数による近似。

  • w(x)={11.5x2+0.75|x|3,if |x|10.25(2|x|)3,if 1|x|2

赤池窓

Akaike window。

  • w(x)=0.6250.5cos2πx0.125cos4πx

ウェルチ窓

Welch window。

  • w(x)=4x(1x)

MDCT窓関数

MDCT(修正離散コサイン変換)の前処理に使う。 MDCTでの変数定義の慣習にしたがい、離散化には、x=(k+0.5)/N, k=0,,N1 のデータ数を 2N とした式 テンプレート:Indent を用いることが多い。

サイン窓

テンプレート:読み仮名。半波余弦窓 (half cycle sine window) とも。 MP3など多くのフォーマットが使用。

  • w(x)=sinπx

Vorbis窓

テンプレート:読み仮名Vorbisが使用。

  • w(x)=sin(π2sin2πx)

カイザー‐ベッセル派生窓

Kaiser‐Bessel derived window。KBD窓 (KBD window) とも。

AC3AACが使用。

テンプレート:Indent

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

ランツォシュ窓

テンプレート:Main Lanczos window。ランツォシュ・フィルタとも[注釈 8][注釈 9]

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

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

  • w(x)=sincxsincxn, if |x|n

ただし、sincx=(sinπx)/πx は正規化sinc関数

Sinc窓

テンプレート:Main 窓と言いつつ、無限長の台を持つ(つまり原点からどこまで離れても関数値が0にならない)関数である。無限回の計算が必要なため直接的な実装を考えた場合は実用的ではない。一方でフィルタの基礎理論としては重要で、近似的な窓であるランツォシュ窓などが考案され画像の拡大縮小などに広く活用されている。

Sinc窓はBrick-wall filtersとなる。

脚注

テンプレート:脚注ヘルプ

注釈

テンプレート:Notelist

出典

参考文献

関連項目

外部リンク


引用エラー: 「注釈」という名前のグループの <ref> タグがありますが、対応する <references group="注釈"/> タグが見つかりません