FFT的前世今生(三)
窗函數(shù)對(duì)于FFT結(jié)果的影響
所謂頻譜泄露,就是信號(hào)頻譜中各譜線之間相互干擾,使測(cè)量的結(jié)果偏離實(shí)際值,同時(shí)在真實(shí)譜線的兩側(cè)的其它頻率點(diǎn)上出現(xiàn)一些幅值較小的假譜。產(chǎn)生頻譜泄露的主要原因是采樣頻率和原始信號(hào)頻率不同步,造成周期的采樣信號(hào)的相位在始端和終端不連續(xù)。簡(jiǎn)單來(lái)說(shuō)就是因?yàn)橛?jì)算機(jī)的 FFT 運(yùn)算能力有限,只能處理有限點(diǎn)數(shù)的 FFT,所以在截取時(shí)域的周期信號(hào)時(shí),沒(méi)有能夠截取整數(shù)倍的周期。信號(hào)分析時(shí)不可能取無(wú)限大的樣本。只要有截?cái)嗖煌骄蜁?huì)有泄露。
在圖1和圖2中,為了最大化FFT運(yùn)算之后的頻率分辨率,我們使用了矩形窗。圖中的時(shí)域信號(hào)是500MHz正弦波信號(hào),在頻譜上應(yīng)該僅在500MHz頻點(diǎn)上看到譜線。FFT運(yùn)算研究的是整個(gè)時(shí)間域(-∞,+∞)與頻域的關(guān)系,所以對(duì)于矩形窗函數(shù)截取的波形應(yīng)該認(rèn)為是無(wú)窮延續(xù)的,因此,矩形窗100ns時(shí)間窗內(nèi),包含了500MHz正弦波整50個(gè)周期,所以波形的首尾能夠整周期得無(wú)縫連接,F(xiàn)FT之后的頻譜會(huì)在500MHz頻點(diǎn)看到較為純凈的能量值。如下圖1所示:
圖1:矩形時(shí)間窗口內(nèi)包含整數(shù)倍周期的信號(hào),首尾可以“無(wú)縫”連接
事實(shí)上,大多數(shù)類型的信號(hào)都不滿足上面的這種特殊情況,絕大多數(shù)信號(hào)在時(shí)間窗口內(nèi)都不是整周期的倍數(shù),在這種情況下,F(xiàn)FT之后的頻譜就不能看做連續(xù)的正弦波了。例如,如果該正弦波的頻率是495MHz,在100ns時(shí)間窗口內(nèi)包含49.5個(gè)周期,因此在截取窗口的首尾部分就存在很大程度上的“不連續(xù)”,這種“不連續(xù)”會(huì)直接影響FFT之后的結(jié)果。“不連續(xù)”部分的能量會(huì)散落在整個(gè)頻譜范圍內(nèi),使用100ns時(shí)間窗口,F(xiàn)FT之后的頻率分辨率是10MHz,495MHz頻點(diǎn)即落在490MHz與500MHz之間,所以495MHz正弦波信號(hào)的能量分成兩部分,所以從頻譜上看,峰值譜線明顯降低了,這被稱作是頻譜泄露(Leakage)。如下圖2所示:
不同的窗函數(shù)對(duì)信號(hào)頻譜的影響是不一樣的,這主要是因?yàn)椴煌拇昂瘮?shù),產(chǎn)生泄漏的大小不一樣,頻率分辨能力也不一樣。信號(hào)的截短產(chǎn)生了能量泄漏,而用FFT算法計(jì)算頻譜又產(chǎn)生了柵欄效應(yīng),從原理上講這兩種誤差都是不能消除的,但是我們可以通過(guò)選擇不同的窗函數(shù)對(duì)它們的影響進(jìn)行抑制。(矩形窗主瓣窄,旁瓣大,頻率識(shí)別精度最高,幅值識(shí)別精度最低;布萊克曼窗主瓣寬,旁瓣小,頻率識(shí)別精度最低,但幅值識(shí)別精度最高)
為了減少頻譜旁瓣和柵欄效應(yīng)的影響,我們?cè)贔FT運(yùn)算中使用窗函數(shù),圖3顯示了Hanning(漢寧窗)使用后的效果。窗函數(shù)位于下圖中左上角的柵格中紅色的波形,疊加在黃色的時(shí)域信號(hào)上。窗函數(shù)與時(shí)域信號(hào)時(shí)域相乘。結(jié)果顯示在左下角的藍(lán)色波形。右下角的粉色波形顯示了進(jìn)行FFT計(jì)算之后的頻譜圖,相對(duì)于右上角的使用窗函數(shù)之前的頻譜圖來(lái)說(shuō),旁瓣的幅度已經(jīng)大大減低。
對(duì)于不同的應(yīng)用需求還有多種不同的窗函數(shù)供工程師選擇,Hanning(漢寧窗)是使用最廣泛的一種窗函數(shù),除此之外,Hamming(海明窗),F(xiàn)lat-top窗和Balckman-Harris窗的效果,在下圖中做了對(duì)比,圖中的信號(hào)使用500MHz正弦波,矩形窗產(chǎn)生最窄的譜線,加Flat-top窗譜線最寬。
下圖4中顯示了同樣的窗函數(shù)對(duì)比,但是采用495MHz正弦波進(jìn)行FFT運(yùn)算,矩形窗顯示了最差旁瓣效果,F(xiàn)lat-top窗函數(shù)基本上保持了與圖3一樣的旁瓣效果,所以我們看到旁瓣的影響和精確頻率分辨率有時(shí)候是不可兼得的。(矩形窗主瓣窄,旁瓣大,頻率識(shí)別精度最高,幅值識(shí)別精度最低;Flat-top窗主瓣寬,旁瓣小,頻率識(shí)別精度最低,但幅值識(shí)別精度最高)
圖5中顯示了不同的窗函數(shù)對(duì)于柵欄效應(yīng)的抑制效果,圖中的正弦波頻率從450MHz增加到550MHz,步進(jìn)值為500KHz,F(xiàn)lat-top窗在整個(gè)頻段上基本保持相同的值,矩形窗函數(shù)有約4dB的差值。
我們把關(guān)于窗函數(shù)的一些重要的結(jié)論總結(jié)如下:
1、 連續(xù)的FFT運(yùn)算并沒(méi)有窗函數(shù)的概念,因?yàn)樾盘?hào)是充滿時(shí)間坐標(biāo)軸的,F(xiàn)FT之后的頻率分辨率是0,并不存在柵欄效應(yīng)。但是,示波器采集和處理的信號(hào)全部是離散的采樣點(diǎn),是非連續(xù)的,所以DFT之后的頻譜一定存在柵欄效應(yīng)。
2、 如果能夠保證示波器時(shí)間窗口內(nèi)的信號(hào)是整數(shù)倍周期的(并且在信號(hào)時(shí)間窗口之前和之后的信號(hào)都是嚴(yán)格周期重復(fù)的),或者采集信號(hào)時(shí)間足夠長(zhǎng),基本上可以覆蓋到整個(gè)有效信號(hào)的時(shí)間跨度。這種方法經(jīng)常在瞬態(tài)捕捉中被使用到,比如說(shuō)沖擊試驗(yàn),如果捕捉的時(shí)間夠長(zhǎng),捕捉到的信號(hào)可以一直包括了振動(dòng)衰減為零的時(shí)刻。在這種情況下,可以不加窗函數(shù)。
3、 如果不滿足1和2,那么FFT計(jì)算之后的頻譜就不可避免受到頻譜泄露(Leakage)的影響,如頻點(diǎn)分裂,幅值能量不精確等等,總之就是頻譜線比較難看,這時(shí)候就需要使用適當(dāng)?shù)拇昂瘮?shù),以滿足我們工程測(cè)量的需要。
4、 示波器中的FFT運(yùn)算,不加窗和加矩形窗是一回事。
5、 窗函數(shù)會(huì)改變頻域波形,讓頻譜形成人們“喜歡”的形狀,但是不會(huì)本質(zhì)上消除頻譜泄露,不同的窗函數(shù)都有其獨(dú)特的特性,我們只需要根據(jù)工程測(cè)試的需要,選擇一款合適的就可以了。
窗函數(shù)選擇指南
如果在測(cè)試中可以保證不會(huì)有泄露的發(fā)生,則不需要用任何的窗函數(shù)(在軟件中可選擇uniform)。但是如同剛剛討論的那樣,這種情況只是發(fā)生在時(shí)間足夠長(zhǎng)的瞬態(tài)捕捉和一幀數(shù)據(jù)中正好包含信號(hào)整周期的情況。
如果測(cè)試信號(hào)有多個(gè)頻率分量,頻譜表現(xiàn)的十分復(fù)雜,且測(cè)試的目的更多關(guān)注頻率點(diǎn)而非能量的大小。在這種情況下,需要選擇一個(gè)主畔夠窄的窗函數(shù),漢寧窗是一個(gè)很好的選擇。
如果測(cè)試的目的更多的關(guān)注某周期信號(hào)頻率點(diǎn)的能量值,比如,更關(guān)心其EUpeak,EUpeak-peak,EUrms或者EUrms2,那么其幅度的準(zhǔn)確性則更加的重要,可以選擇一個(gè)主畔稍寬的窗,flat-top窗在這樣的情況下經(jīng)常被使用。
如果被測(cè)信號(hào)是隨機(jī)或者未知的,選擇漢寧窗。