窓関数について復習

 フーリエ変換の窓関数について復習し直している。窓関数を適用する理由で、「両端が0に収束していないから(波形がぶった斬られる)」、と思っていたが、「窓長と波形の周期が合わない場合は」、というものもある。Scilabで試してみた。

波形は1Hzの正弦波。
窓長と波形の周期が合っている場合。窓と周期が合えば両端が0に収束していなくても関係ない。


窓に含まれる周期が長いと漏れ誤差はどう変わるのか?。
スペクトル振幅は変わらないが、卓越周波数のズレは抑えられているっぽい。


 続いて窓関数のメインローブとサイドローブについて。今まで、あのスペクトルの出し方が判らなかった。窓波形をそのままフーリエ変換した所であのようなスペクトルにはならない。そこでやり方を変えてみた。原信号に窓関数を適用することが、周波数軸上でどのような影響を及ぼすかを知りたい訳だ。要はインパルスを伝達関数に放り込んで得た波形をフーリエ変換したら伝達関数が得られるのに等しい。
 上はインパルスと窓を畳み込んだ波形。下はそれをフーリエ変換したスペクトル。
先ずはレクタンギュラ窓。


続いてハニング窓。


最後にブラックマン窓。


 負側に鏡像コピーすれば、お馴染みのスペクトルになる。このスペクトルと原信号のスペクトルの周波数軸上での畳み込みが、時間軸上での窓関数の適用になるので、例えば正弦波なら、メインローブの幅が大きとメイン周波数の前後での畳込み量が大きくなってしまい、周波数分解能が下がる。サイドローブが大きいと全体として畳み込み量が大きくなるので、レベルの低いピークが埋もれてしまう。


 周波数が近接した2つの正弦波と、レベルの小さい正弦波2つの計4つの合成波に対し。
レクタンギュラ窓を適用した場合。近接したピークの区別はつくものの、レベルの小さいピークは埋もれてしまう。


ハニング窓を適用した場合。レベルの小さいピークは区別つくが、近接したピークは何とか見分けが付く程度。


ブラックマン窓を適用した場合。ハニング窓よりも更にbgnは低下しているが、近接したピークは区別できない。


 実際に仕事ではレクタンギュラ窓とハニング窓しか使わない。レクタンギュラ窓はインパルス応答や減衰波形、連続波形はハニング窓、という感じ。