窓関数
概要
編集窓関数はある有限区間以外で0となる関数である[1](⇒ #定義)。窓は関数や信号に掛け合わせて適用されることが主であり、これにより関数の有限区間のみを切り出す(⇒ #窓掛け)。様々な数学的変換のなかに登場し(⇒ #利用)、応用数学や工学への応用範囲も広い(⇒ #応用)。窓関数の性能はその周波数スペクトルを用いて議論されることが多く(⇒ #性能)、目的に応じた様々な性能の窓関数が提唱されている(⇒ #例)。
定義
編集実数 , と任意の関数 を用いて窓関数 は次のように定義される[1]:
窓掛け
編集窓掛けは時間領域において関数と窓関数の要素積である。すなわち窓関数 は関数 に以下の形で適用される:
窓掛けの効果
編集時間領域の窓掛け効果
編集時間領域において窓掛けは関数の区間切り出しという効果を持つ。
窓 はその定義から有限区間 でのみ非ゼロの値を取りそれ以外では である[1]。窓掛けは関数と窓の要素積であるから、関数 を窓掛けして得た関数 もまた有限区間 でのみ非ゼロの値を取りそれ以外では である。つまり以下の式を満たす:
これは関数のある有限区間を(フェードイン/フェードアウトしながら)切り出す効果と理解できる。切り出し(= 区間外 保証)により、信号の特定時刻周辺における特性解析(参考: 音声分析#短時間分析)や、無限区間関数における積分や和の正しい計算打ち切りを可能にする。
周波数領域の窓掛け効果
編集周波数領域において窓掛けは意味を持つ。
窓掛けされた関数 の周波数スペクトル と関数本来のスペクトル は同じではない。積のフーリエ変換はフーリエ変換の畳み込み、つまり、
である。余分な が畳み込まれることによって、フーリエ変換の結果は変化するが、この変化は望ましいものではない。
性能
編集窓関数 の性能はその周波数スペクトル を用いてしばしば議論される。これは窓関数が窓掛けの形で適用されることが殆どであり、窓掛けが関数の周波数特性へ影響するからである(⇒ #周波数領域の窓掛け効果)。
一般に は、中心が絶対値が大きく、両側に離れるにつれ小さくなるが、0になることはない( が有限区間外で0ならば、常にそうなる)。ただし、単峰性ではなく、図のように、無数の峰(ローブ)を持つ。中央のいちばん大きいローブをメインローブ、他をサイドローブという。このような が畳み込まれることにより、スペクトルは、ピークがなまり(周波数分解能が下がり)、ノイズ・フロアが上がる(ダイナミック・レンジが狭まる)ことになる。
窓関数には以下の2つの特性が要求される:
しかしこの2つはトレード・オフの関係にある。そのため窓関数の性能の良し悪しは用途に依存する。
雑音帯域幅
編集周波数分解能とダイナミックレンジの概念は、窓関数の使用者が何を行おうしているかに依存しており、やや主観的な傾向がある。しかしながら、周波数分解能やダイナミックレンジは、定量化可能な全リーク[注釈 1]量と密接に関連する。リークは一般的に等価の帯域幅 として表される。リークについてDTFTによる長方形(高さはスペクトルの最大で幅は )への再分配を考えた場合、より多くのリークはより大きな帯域幅となる。入力信号がランダム・ノイズ成分を含む時、それぞれのDFTビンに含まれる平均電力に比例するため、この帯域幅は雑音等価帯域幅もしくは等価雑音帯域幅と呼ばれる。一定時間で平均化したパワースペクトルのグラフが一般的に水平なノイズフロアとして現れる現象は、この結果発生している。ノイズフロアの高さは に比例する。よって、2つの異なる窓関数では、異なるノイズフロアが発生する。
利用
編集窓関数は様々な数学的変換のなかで利用される。以下はその一例である:
- 窓掛け
- 短時間フーリエ変換(STFT): 任意窓による窓掛けで短時間信号を切り出し[2]
- 離散コサイン変換(DCT)
- 修正離散コサイン変換(MDCT): プリンセン‐ブラッドリー条件[注釈 2] を満たす窓[注釈 3]による窓掛け
- 連続ウェーブレット変換
変わった利用では、窓関数を畳み込むという手法がある。 (畳み込みのフーリエ変換はフーリエ変換の積)なので、窓関数がデジタルフィルタとして働く。
フーリエ変換
編集フーリエ変換では関数と三角関数が無限区間 で値を取る。しかしフーリエ変換を数値計算する場合、無限長を扱えないため、有限区間 でフーリエ変換をおこなって区間外は無視する。これは関数 を区間外で0とみなすことに等しい(「区間内のデータを周期的に繰り返す」という表現をすることもあるが、DFT(離散フーリエ変換)の場合はこの2つは等価である)。これは数学的に矩形窓による窓掛けと同義である。
応用
編集窓関数は応用数学や工学で広く応用される。以下はその一例である:
フィルタデザイン
編集窓関数はデジタルフィルタのデザインに応用される。一例として、Sinc関数により理想的的な無限系列中のIIRフィルタ処理を有限系列中のFIRフィルタ処理に変換する(window method)[3][4]。
例
編集特に断らない限り、本節では窓関数 について以下の表現を採用する:
- 台区間:
- 正規化:
- 場合分け: 台の外側「 」を省略
なお、他の文献では区間 や [注釈 4] を採用する場合もある。離散化するには、 に対して、 と、 の2種類の方法があるが、特殊な用途を除き、どちらでも大差はない。また、初めから に対する関数 や系列 を表す資料もあるので、注意してほしい。グラフは、 と離散化したときの、窓関数自身と、DFTで求めたパワースペクトルである。
名称 | 式 | ||
---|---|---|---|
三角関数系 | |||
サイン窓 | |||
Vorbis窓 | |||
一般化ハミング窓 | [注釈 5] | ||
矩形窓 ( ) | [注釈 5] | ||
ハン窓 ( ) | |||
ハミング窓( ) | [注釈 5] | ||
ブラックマン窓 | |||
赤池窓 | |||
ナットール窓 | |||
ブラックマン‐ハリス窓 | |||
ブラックマン‐ナットール窓 | |||
フラット・トップ窓 | |||
バートレット‐ハン窓 | |||
テューキー窓 | |||
多項式系 | |||
バートレット窓 | |||
ウェルチ窓 | |||
パルザン窓 | |||
MDCT窓関数 | |||
パラメータ系 | |||
カイザー窓 | |||
ガウス窓 | [注釈 5] | ||
指数窓 | [注釈 5] |
矩形窓
編集単に有限長のデータを用意しただけのとき、暗黙のうちにこの窓関数を使っている。理論上、周波数分解能は最も良い。一方で にいちじるしい不連続があり、時間領域での信号飛び、周波数特性での高いサイドローブ(=低ダイナミックレンジ)の所以となっている。
ガウス窓
編集Gauss window。ガウシアン窓 (Gaussian window) とも。
ガウス関数のフーリエ変換は再びガウス関数になる(フーリエ変換の固有関数である)。ガウス関数は無限に広がるため、実用上必要な長さまでで計算を打ち切る必要がある。無限に広がる窓関数を不連続に打ち切った場合、矩形窓を掛けた事になり、通過帯域と阻止帯域にリップルが発生し、サイドローブも大きく上昇する。主に、ガボール変換 (Gabor transform)や連続ウェーブレット変換で使われる。
ハン窓
編集ユリウス・フォン・ハンが考案した。最もよく使われる窓関数の一つ[要出典]。ハン窓及び後述のハミング窓は、後の研究で後述する一つの関数族「一般化ハミング窓("raised cosine" または "generalized Hamming" 窓)」に分類されたため、ハン(Han)とハミング(Hamming)両名の名前から合成された「ハニング窓(hanning window)」という呼び方でハン窓を指す場合もある。
ハミング窓
編集ハン窓の改良版として、リチャード・ハミングが考案した。最もよく使われる窓関数の一つ[要出典]。ハン窓より周波数分解能が良く、ダイナミック・レンジが狭い。区間の両端で不連続なのが特徴。
テューキー窓
編集ジョン・テューキーが考案した。コサイン関数を用いて以下のように表される[5]。
ここでxw は窓の幅である。
ブラックマン窓
編集ラルフ・ブラックマンが考案した。最もよく使われる窓関数の一つ[要出典]。ハン窓/ハミング窓より、周波数分解能が悪く、ダイナミック・レンジが広い。
カイザー窓
編集Kaiser window。カイザー‐ベッセル窓 (Kaiser‐Bessel window) ともいうが、後述のカイザー‐ベッセル派生窓と紛らわしい。J・F・カイザーが考案した。
柔軟な特性変更ができるためデジタル信号処理において良く用いられる。
実数パラメタ を持つ( をパラメタとすることもある)。 が0であれば矩形窓そのものである。 を大きくするほどD/A変換の理論上において最も理想的な特性を持つガウス窓への近似度を高めることができ、周波数分解能が悪くなる代わりにダイナミックレンジが広くなる。 の調節だけで2種類の窓関数の特性の間を連続的に推移できるのが最大の特長である。周波数分解能はおおよそ に反比例する。
では矩形窓と同じ。 ではハミニング窓に、 ではハン窓に、 ではブラックマン窓に似た形になる。
ただし、 は第1種の0次の変形ベッセル関数。
バートレット窓
編集Bartlett window。三角窓 (triangular window) とも。
教科書には必ず出てくるが、実際に使うことは少ない。
指数窓
編集exponential window。
減衰積分をおこなうとき、暗黙のうちにこの窓関数を使っている。コンパクト・サポートでないので、実際に使うときは適当な区間の外を0にする。左右非対称なので、エコー検出など、時間非対称な問題に使う。
一般化ハミング窓
編集ハン窓とハミング窓の一般化。実数パラメタ を持ち、 でハン窓、 でハミング窓、 で矩形窓になる。
バートレット‐ハン窓
編集Bartlett‐Hann window。修正バートレット‐ハン窓 (modified Bartlett‐Hann window) とも。
バートレット窓とハン窓の線形混合。異なる比率のものを使うこともある。
ナットール窓
編集ブラックマン‐ハリス窓
編集Blackman‐Harris window。
ブラックマン‐ナットール窓
編集フラット・トップ窓
編集スペクトルのメインローブの頂部が平らであることから、こう呼ぶ。別の式で表される窓関数を「フラット・トップ窓」と呼ぶことがある。
パルザン窓
編集Parzen window。
ガウス窓の区分3次関数による近似。
赤池窓
編集Akaike window。
ウェルチ窓
編集Welch window。
MDCT窓関数
編集MDCT(修正離散コサイン変換)の前処理に使う。 MDCTでの変数定義の慣習にしたがい、離散化には、 のデータ数を とした式
を用いることが多い。
サイン窓
編集Vorbis窓
編集カイザー‐ベッセル派生窓
編集Kaiser‐Bessel derived window。KBD窓 (KBD window) とも。
詳細は「カイザー-ベッセル派生 (KBD) 窓」を参照
フィルタとして使う窓関数
編集ランツォシュ窓
編集Lanczos window。ランツォシュ・フィルタとも[注釈 8][注釈 9]。
整数パラメタ を持つ。 の値によって、 次ランツォシュ窓、ランツォシュ 窓などと呼ぶ。
データのデシメーション(画像縮小など)の前処理に、LPF(低域通過フィルタ)として使われる。
ただし、 は正規化sinc関数。
Sinc窓
編集窓と言いつつ、無限長の台を持つ(つまり原点からどこまで離れても関数値が0にならない)関数である。無限回の計算が必要なため直接的な実装を考えた場合は実用的ではない。一方でフィルタの基礎理論としては重要で、近似的な窓であるランツォシュ窓などが考案され画像の拡大縮小などに広く活用されている。
Sinc窓はBrick-wall filtersとなる。
脚注
編集注釈
編集- ^ リークとは、パワースペクトルのピークが隣のビンに広がる現象のこと。(“スペクトル解析の追加”. LeCroy. p. 12. 2012年8月19日閲覧。)
- ^ Princen-Bradley condition
- ^ MDCT窓、プリンセン‐ブラッドリー窓とも
- ^ 例: 音響信号処理全般(中心時間 の前後で音量をフェードアウトさせるという音楽的ニュアンス)
- ^ a b c d e 非ゼロの区間端点は打ち切り(非連続性に0)
- ^ hannは人名由来だが慣習的に小文字で書く
- ^ hammingは人名だが、慣習的に小文字で書く
- ^ 発音記号は[ˈlaːnt͡soʃ]となっているため、カナ表記としては「ラーンツォシュ」「ランツォシュ」が近いが、発音しやすさの観点から「ランチョシュ」「ランチョス」などとも表記される。
- ^ Lanczosの発音については「現在のハンガリー領出身のユダヤ系ハンガリー人」および「コルネリウス・ランチョス」も参照。
出典
編集- ^ a b c d
窓関数 ある有限区間以外で0となる,通常正値をとる関数
亀岡. (2014). 信号処理論第二 第5回. 東京大学. - ^
信号の一部を取り出すような関数を窓として用いて,信号の局所的な情報を解析・処理する
(矢田部 2021, p. 396) - ^ http://www.labbookpages.co.uk/audio/firWindowing.html
- ^ Mastering Windows: Improving Reconstruction
- ^ Earl G. Williams 著、吉川茂、西條献児 訳『フーリエ音響学』シュプリンガーフェアラーク東京、2005年、129頁。ISBN 4-431-71174-0。
参考文献
編集- 矢田部, 浩平 (2021). "第三回:短時間フーリエ変換". 日本音響学会誌. 77 (6): 396–403. doi:10.20697/jasj.77.6_396。
関連項目
編集外部リンク
編集- 窓関数 (Window Function) - 井澤裕司
- フーリエ変換と窓関数 - 測定器玉手箱
- Windows - Paul Bourke
- Window Functions - Roger L. Easton, Jr.
- Ogg/Vorbis in embeded systems