如上圖所示,這是Hanning窗的波形。
上圖未使用窗函數,下圖使用了Hanning窗,洩漏問題明顯改善。Hanning窗在始末兩端都為0,規避了所有不連續性,因此該窗函數適用於持續性噪聲和周期性聲音信號。一般來說,在95%情況下,Hanning窗都適用。
既然Hanning窗可以滿足多數情況,且效果較好,那我們還有必要使用其他的窗函數嗎?答案是肯定的。
下面就介紹Hanning窗不適用的情形。如上圖所示,信號的輸入是一個瞬態波,逐漸衰弱。如果使用Hanning窗的話,加窗後的信號如上圖c所示,顯然,這個信號不能反映真實的衰減過程。
如上圖所示,左側是未加窗的結果,正確反映了該瞬態信號的頻譜,但是右側計算的FFT結果,看起來更像是一個正弦波,這顯然是有問題的。因此,對於這種瞬態波,我們不能選用Hanning窗,而是要使用所有信號均相等的統一窗(矩形窗),如下圖所示。
從前述兩種窗函數來看,均有各自應用的場景,而平頂窗則是在某些場景下對Hanning窗做一定程度的改善。首先,簡述Hanning窗的局限性。如上圖所示,這是一個使用Hanning窗進行信號處理的過程,可以看到窗的中心位置非常圓。從上圖結果來看,可以衰減1.5dB的能量,因此這只能針對頻率範圍較小,比較精確的峰值。如果一個噪聲的峰值比較寬,就需要基於Hanning窗進行改進的平頂窗,如下圖所示:
相較於Hanning窗,同等寬度的信號,平頂窗衰減只有0.1dB。具體對比看下圖:
從上圖來看,平頂窗的確能改善前述問題,但是犧牲了頻率解析度。在具體應用場景中,要根據需求是否選擇平頂窗。