コンテンツにスキップ

窓関数

出典: フリー百科事典『ウィキペディア(Wikipedia)』

窓関数(まどかんすう、(英: window function)はある有限区間(台)以外で0となる関数である[1]。窓(まど、(英: window)とも。

概要

[編集]

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

定義

[編集]

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

w(x)={g(x),if a≤x≤b0,otherwise

窓掛け

[編集]

窓掛け(まどかけ、(英: windowing)は関数や信号に窓関数を掛けることである。

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

y(x)=w(x)f(x)

窓掛けの効果

[編集]

時間領域の窓掛け効果

[編集]

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

窓 w(x) はその定義から有限区間 a≤x≤b でのみ非ゼロの値を取りそれ以外では 0 である[1]。窓掛けは関数と窓の要素積であるから、関数 f(x) を窓掛けして得た関数 y(x) もまた有限区間 a≤x≤b でのみ非ゼロの値を取りそれ以外では 0 である。つまり以下の式を満たす:

y(x)={w(x)f(x),if a≤x≤b0,otherwise

これは関数のある有限区間を(フェードイン/フェードアウトしながら)切り出す効果と理解できる。切り出し(= 区間外 0 保証)により、信号の特定時刻周辺における特性解析(参考: 音声分析#短時間分析)や、無限区間関数における積分や和の正しい計算打ち切りを可能にする。

周波数領域の窓掛け効果

[編集]

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

窓掛けされた関数 wf の周波数スペクトル 𝔉(wf) と関数本来のスペクトル 𝔉f は同じではない。積のフーリエ変換はフーリエ変換の畳み込み、つまり、

𝔉(wf)=𝔉w∗𝔉f

である。余分な 𝔉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つは等価である)。これは数学的に矩形窓による窓掛けと同義である。

応用

[編集]

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

フィルタデザイン

[編集]

窓関数はデジタルフィルタのデザインに応用される。一例として、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,…,N−1 に対して、x=k/(N−1) と、x=(k+0.5)/N の2種類の方法があるが、特殊な用途を除き、どちらでも大差はない。また、初めから k に対する関数 w(k) や系列 wk を表す資料もあるので、注意してほしい。グラフは、x=k/(N−1) と離散化したときの、窓関数自身と、DFTで求めたパワースペクトルである。

表. 窓関数の比較
名称 式 w(x)
三角関数系
サイン窓 sin⁡πx
Vorbis窓 sin⁡(0.5πsin2πx)
一般化ハミング窓 a−(1−a)cos⁡2πx[注釈 5]
矩形窓  (a=1) 1[注釈 5]
ハン窓  (a=0.50) 0.50−0.50cos⁡2πx
ハミング窓(a=0.54) 0.54−0.46cos⁡2πx[注釈 5]
ブラックマン窓 0.420−0.5cos⁡2πx+0.080cos⁡4πx
赤池窓 0.625−0.5cos⁡2πx−0.125cos⁡4πx
ナットール窓 0.3557680−0.4873960cos⁡2πx+0.1442320cos⁡4πx−0.0126040cos⁡6πx
ブラックマン‐ハリス窓 0.3587500−0.4882900cos⁡2πx+0.1412800cos⁡4πx−0.0116800cos⁡6πx
ブラックマン‐ナットール窓 0.3635819−0.4891775cos⁡2πx+0.1365995cos⁡4πx−0.0106411cos⁡6πx
フラット・トップ窓 1−1.93cos⁡2πx+1.29cos⁡4πx−0.388cos⁡6πx+0.032cos⁡8πx
バートレット‐ハン窓 0.62−0.48|x−0.5|−0.38cos⁡2πx
テューキー窓
多項式系
バートレット窓 1−2|x−0.5|
ウェルチ窓 4x(1−x)
パルザン窓 {1−1.5x2+0.75|x|3,if |x|≤10.25(2−|x|)3,if 1≤|x|≤2
MDCT窓関数
パラメータ系
カイザー窓
ガウス窓 exp⁡(−(x−0.5)2/σ2)[注釈 5]
指数窓 exp⁡(−x/T)[注釈 5]

矩形窓

[編集]
矩形窓

矩形窓(くけいまど、(英: rectangular window)。方形窓(ほうけいまど)とも。

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

  • w(x)=1

ガウス窓

[編集]
ガウス窓

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

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

  • w(x)=exp⁡(−(x−0.5)2σ2)

ハン窓

[編集]
ハン窓

ハン窓(ハンまど、(英: hann window)[注釈 6]。フォンハン窓(フォンハンまど、(英: von Hann window)、英: raised cosine window[要出典] 、2乗余弦窓[要出典]とも。

ユリウス・フォン・ハン(英語版)が考案した。最もよく使われる窓関数の一つ[要出典]。ハン窓及び後述のハミング窓は、後の研究で後述する一つの関数族「一般化ハミング窓("raised cosine" または "generalized Hamming" 窓)」に分類されたため、ハン(Han)とハミング(Hamming)両名の名前から合成された「ハニング窓(hanning window)」という呼び方でハン窓を指す場合もある。

  • w(x)=0.5−0.5cos⁡2πx

ハミング窓

[編集]
ハミング窓

ハミング窓(ハミングまど、(英: hamming window)[注釈 7]。

ハン窓の改良版として、リチャード・ハミングが考案した。最もよく使われる窓関数の一つ[要出典]。ハン窓より周波数分解能が良く、ダイナミック・レンジが狭い。区間の両端で不連続なのが特徴。

  • w(x)=0.54−0.46cos⁡2πx

テューキー窓

[編集]

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

w(x)={1,x≤Lx2−xw12−12cos⁡(π(x−Lx2)xw),Lx2−xw<x<Lx20,x>Lx2

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

ブラックマン窓

[編集]
ブラックマン窓

ブラックマン窓(ブラックマンまど、(英: Blackman window)。

ラルフ・ブラックマンが考案した。最もよく使われる窓関数の一つ[要出典]。ハン窓/ハミング窓より、周波数分解能が悪く、ダイナミック・レンジが広い。

  • w(x)=0.42−0.5cos⁡2πx+0.08cos⁡4πx

カイザー窓

[編集]
カイザー窓、α=2
カイザー窓、α=3

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

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

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

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

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

ただし、I0 は第1種の0次の変形ベッセル関数。

バートレット窓

[編集]
バートレット窓

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

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

  • w(x)=1−2|x−0.5|

指数窓

[編集]

exponential window。

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

  • w(x)=exp⁡−xT

一般化ハミング窓

[編集]

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

  • w(x)=a−(1−a)cos⁡2πx

バートレット‐ハン窓

[編集]
バートレット‐ハン窓

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

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

  • w(x)=0.62−0.48|x−0.5|−0.38cos⁡2πx

ナットール窓

[編集]
ナットール窓

ナットール窓(ナットールまど、(英: Nuttall window)。

  • w(x)=0.355768−0.487396cos⁡2πx+0.144232cos⁡4πx−0.012604cos⁡6πx

ブラックマン‐ハリス窓

[編集]
ブラックマン‐ハリス窓

Blackman‐Harris window。

  • w(x)=0.35875−0.48829cos⁡2πx+0.14128cos⁡4πx−0.01168cos⁡6πx

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

[編集]
ブラックマン‐ナットール窓

ブラックマン‐ナットール窓(ブラックマン‐ナットールまど、(英: Blackman‐Nuttall window)。

  • w(x)=0.3635819−0.4891775cos⁡2πx+0.1365995cos⁡4πx−0.0106411cos⁡6πx

フラット・トップ窓

[編集]
フラット・トップ窓

フラット・トップ窓(フラット・トップまど、(英: flat top window)。

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

  • w(x)=1−1.93cos⁡2πx+1.29cos⁡4πx−0.388cos⁡6πx+0.032cos⁡8πx

パルザン窓

[編集]

Parzen window。

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

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

赤池窓

[編集]

Akaike window。

  • w(x)=0.625−0.5cos⁡2πx−0.125cos⁡4πx

ウェルチ窓

[編集]

Welch window。

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

MDCT窓関数

[編集]

MDCT(修正離散コサイン変換)の前処理に使う。 MDCTでの変数定義の慣習にしたがい、離散化には、x=(k+0.5)/N, k=0,…,N−1 のデータ数を 2N とした式

x=k+0.52N,  k=0,…,2N−1

を用いることが多い。

サイン窓

[編集]

サイン窓(サインまど、(英: sine window)。半波余弦窓 (half cycle sine window) とも。 MP3など多くのフォーマットが使用。

  • w(x)=sin⁡πx

Vorbis窓

[編集]

Vorbis窓(ヴォルビスまど、(英: Vorbis window)。 Vorbisが使用。

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

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

[編集]

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

AC3やAACが使用。

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

[編集]

ランツォシュ窓

[編集]

Lanczos window。ランツォシュ・フィルタとも[注釈 8][注釈 9]。

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

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

  • w(x)=sincx⋅sincxn, if |x|≤n

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

Sinc窓

[編集]

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

Sinc窓はBrick-wall filtersとなる。

脚注

[編集]

注釈

[編集]
  1. ↑ リークとは、パワースペクトルのピークが隣のビンに広がる現象のこと。(“スペクトル解析の追加”. LeCroy. p. 12. 2012年8月19日閲覧。)
  2. ↑ Princen-Bradley condition
  3. ↑ MDCT窓、プリンセン‐ブラッドリー窓とも
  4. ↑ 例: 音響信号処理全般(中心時間 x=0 の前後で音量をフェードアウトさせるという音楽的ニュアンス)
  5. 1 2 3 4 5 非ゼロの区間端点は打ち切り(非連続性に0)
  6. ↑ hannは人名由来だが慣習的に小文字で書く
  7. ↑ hammingは人名だが、慣習的に小文字で書く
  8. ↑ 発音記号は[ˈlaːnt͡soʃ]となっているため、カナ表記としては「ラーンツォシュ」「ランツォシュ」が近いが、発音しやすさの観点から「ランチョシュ」「ランチョス」などとも表記される。
  9. ↑ Lanczosの発音については「現在のハンガリー領出身のユダヤ系ハンガリー人」および「コルネリウス・ランチョス」も参照。

出典

[編集]
  1. 1 2 3 4 窓関数 ある有限区間以外で0となる,通常正値をとる関数亀岡. (2014). 信号処理論第二 第5回. 東京大学.
  2. ↑ 信号の一部を取り出すような関数を窓として用いて,信号の局所的な情報を解析・処理する(矢田部 2021, p. 396)
  3. ↑ http://www.labbookpages.co.uk/audio/firWindowing.html
  4. ↑ Mastering Windows: Improving Reconstruction
  5. ↑ Earl G. Williams 著、吉川茂、西條献児 訳『フーリエ音響学』シュプリンガーフェアラーク東京、2005年、129頁。ISBN 4-431-71174-0。

参考文献

[編集]

関連項目

[編集]