文章內容主要來源於
Fast Fourier Transform Introduction
我們知道數字信號處理的主要數學工具是傅里葉變換,而傅里葉變換是研究整個時間域和頻率域的關系,當運用計算機實現測試信號處理時,不可能對無限長的信號進行測量和運算,而是取其有限的時間片段進行分析。具體做法是從信號中截取一個時間片段,然后用截取的信號時間片段進行周期延拓處理,得到虛擬的無限長信號,再進行傅里葉變換和相關分析。無限長信號被截斷后,其頻譜發生了畸變,我們稱為頻譜能量泄漏,為了減少頻譜泄漏,可采用不同的截取函數對信號進行截斷,截斷函數稱為窗函數,簡稱為窗。
一 為什么要加窗
每次FFT變換只能對有限長度的時域數據進行變換,因此需要對時域信號進行信號截斷,即使是周期信號,如果截斷的時間長度不是周期的整數倍(整周期截斷),那么截取后的信號將會存在頻譜泄漏,為了將這個泄漏誤差減少到最小程度(不是消除),我們需要使用窗函數。加窗主要是為了使時域信號似乎更好的滿足FFT處理的周期性要求,減少泄漏。
圖1 整周期截斷、非整周期截斷及加窗后的頻譜
如上圖1所示,若整周期截斷,則FFT頻譜為單一譜線。若為非整周期截斷,則頻譜出現拖尾,可以看出泄漏很嚴重。為了減少泄漏,給信號施加一個窗函數,原始截斷后的信號與這個窗函數相乘之后得到的信號為圖1最右側的信號。可以看出,此時信號的起始時刻和結束時刻幅值都為0,也就是說在這個時間長度內,信號為周期信號,但是只有一個周期,對這個信號做FFT分析,相比之前未加窗的頻譜,泄漏已明顯改善,但並未完全消除,因此窗函數只能減少泄漏,不能消除泄漏。
二 窗函數的定義
信號截斷時,只能截取一定長度,哪怕原始信號是無限長,就好像是用一個“窗”(確切來說更像一個“框”)去做這樣的截取。如下圖2所示,原始信號是周期信號,時間很長,截取時用紅色的“窗”去截取這個周期信號,截取得到的信號如圖3所示。
圖2 原始信號
圖3 時間窗截斷后的信號
當然,這個“窗”是一個單位權重的加權函數,成為“矩形窗”。這個“窗”外的信號是看不到的,就好比通過窗戶看外面的世界,世界很大也很精彩,但您能看到的只是位於窗內的世界。這就是為什么這樣的加權函數被成為窗函數的真正原因。
上圖3中用於截取信號的時域截取函數稱為窗函數,它是一種加權函數,不同窗的加權是不一樣的,也就是說,可以用不同的窗函數來做信號截斷。常用的窗函數有矩形窗、漢寧窗、平頂窗和指數窗等。
三 窗函數的時頻域特征
加窗實質是用一個所謂的窗函數與原始的時域信號做乘積的過程,使得相乘后的信號似乎更好的滿足傅里葉變換的周期性要求,如下圖4所示,原始的信號是不滿足FFT變換的周期性要求的,變換后存在泄漏,如果施加一個窗函數,會在一定程度上減少泄漏。
原始周期信號 窗函數 加窗后的信號
圖4 信號加窗
使用不同的時間窗,他們的時域形狀和頻域特征是不相同的,這里主要介紹三種常見的窗函數的時域表達形式,以及他們的時域窗形狀和頻域特征。這三種窗分別是矩形窗、漢寧窗和平頂窗。它們的時域表達式如下表所示,並且假設時間窗的范圍為0≤t≤T,t的取值區間不同,窗函數的表達形式會略有差異。
窗函數 時域表達式
矩形窗
漢寧窗
平頂窗
矩形窗、漢寧窗和平頂窗的時域形狀和頻域特征如下圖5~圖6所示,可以看出,窗函數不同,時域和頻域都是不同的。
圖5 三種窗函數的時域形狀
圖6 三種窗函數的頻域特征
窗函數的典型頻譜特征如下圖7所示:
圖7 窗函數的典型頻譜特征
四 加窗函數的原則
- 加窗函數時,應使窗函數頻譜的主瓣寬度應盡量窄,以獲得高的頻率分辨能力
- 旁瓣衰減應盡量大,以減少頻譜拖尾。
但通常都不能同時滿足這兩個要求,各種窗的差別主要在集中於主瓣的能量和分散在所有旁瓣的能量之比。窗函數的選擇取決於分析的目標和被分析信號的類型,一般來說,有效噪聲頻帶越寬,頻率分辨能力越差,越難於分清有相同幅值的鄰近頻率。選擇性的提高與旁瓣的衰減率有關,通常有效噪聲帶寬窄的窗,其旁瓣的衰減率較低,因此窗的選擇在二者中進行折中處理。
窗函數的選擇一般原則如下:
1. 如果截斷的信號仍為周期信號,則不存在泄漏,無需加窗,相當於加矩形窗;
2. 如果信號是隨機信號或者未知信號,或者有多個頻率分量,測試關注的是頻率點而非能量大小,建議選擇漢寧窗;
3. 對於校准目的,則要求幅值精確,平頂窗是個不錯的選擇;
4. 如果同時要求幅值精度和頻率精度,可選擇凱塞窗;
5. 如果檢測兩個頻率相近、幅值不同的信號,建議用布萊克曼窗;
6. 錘擊法試驗,力信號加力窗,響應可加指數窗。
有效噪聲帶寬怎么定義的?
如何在窗函數時域或頻域上判斷有效噪聲帶寬大小?
如何在Matlab中對比分析不同窗函數的時頻特性?