【轉】什么是窗函數?


轉自:

    https://zhuanlan.zhihu.com/p/24318554

 

 

本文首發於公眾號《模態空間》。

似乎每次做FFT都需要加窗函數,很少有不加窗函數的時候。那為什么要加窗函數,加窗有什么好處,又有什么壞處呢,憑什么目的來加函數呢?

本文主要內容包括:

1. 為什么要加窗函數;

2. 窗函數的定義;

3. 窗函數的時頻域特征;

4. 加窗函數的原則;

5. 模態測試所用窗函數;

6. 窗函數帶來的影響。



1. 為什么要加窗

在《什么是泄漏?》中已經講到每次FFT變換只能對有限長度的時域數據進行變換,因此,需要對時域信號進行信號截斷。即使是周期信號,如果截斷的時間長度不是周期的整數倍(周期截斷),那么,截取后的信號將會存在泄漏。為了將這個泄漏誤差減少到最小程度(注意我說是的減少,而不是消除),我們需要使用加權函數,也叫窗函數加窗主要是為了使時域信號似乎更好地滿足FFT處理的周期性要求,減少泄漏。

如下圖所示,若周期截斷,則FFT頻譜為單一譜線。若為非周期截斷,則頻譜出現拖尾,如圖中部所示,可以看出泄漏很嚴重。為了減少泄漏,給信號施加一個窗函數(如圖中上部紅色曲線所示),原始截斷后的信號與這個窗函數相乘之后得到的信號為上面右側的信號。可以看出,此時,信號的起始時刻和結束時刻幅值都為0,也就是說在這個時間長度內,信號為周期信號,但是只有一個周期。對這個信號做FFT分析,得到的頻譜如下部右側所示。相比較之前未加窗的頻譜,可以看出,泄漏已明顯改善,但並沒有完全消除。因此,窗函數只能減少泄漏,不能消除泄漏。

因此,加窗的目的是為了減少泄漏。但加窗不能消除泄漏,只能減少。



2. 窗函數的定義

信號截斷時,只能截取一定長度,哪怕原始信號是無限長的,因此,好像是用一個“窗”(確切地說更像個“框”)去作這樣的截取了。如下圖所示,原始信號是周期信號,時間很長,截取時用紅色的“窗”去截取這個周期信號,截取得到的信號如圖中下部所示。

原始信號和時間窗截斷后的信號

 

當然這個“窗”是一個單位權重的加權函數,稱為“矩形窗”。這個“窗”外的信號是看不到的,只能看到窗內的信號,這就好比通過窗戶看外面的世界,世界很大也很精彩,您能看到的只是位於窗內的世界,而窗外的世界,您是看不到的。因此,這就是為什么這樣的加權函數被稱為窗函數的真正原因。這樣稱呼,更為直觀形象。

上圖中用於截取信號的時域截取函數(就是上圖中紅色的那個“窗”)就稱為窗函數,它是一種計權函數,不同的窗函數計權是不一樣的。也就是說,可以用不同的截取函數(窗函數)來做信號截取。到底用何種窗函數基於信號類型和分析目的。常用的窗函數有矩形窗、漢寧窗、平頂窗、指數窗等。



3. 窗函數的時頻域特征

加窗實質是用一個所謂的窗函數與原始的時域信號作乘積的過程(當然加窗也可以在頻域進行,但時域更為普遍),使得相乘后的信號似乎更好地滿足傅立葉變換的周期性要求。如下圖所示,原始的信號是不滿足FFT變換的周期性要求的,變換后存在泄漏,如果施加一個窗函數,會在一定程度上減少泄漏。為了減少泄漏,用一個窗函數與原始周期信號相乘,得到加窗后的信號為周期信號,從而滿足FFT變換的周期性要求。

 

×

 

原始周期信號×窗函數

=加窗后的信號

 

使用不同的時間窗,它的時域形狀和頻域特征是不相同的。在這,介紹三種常見的窗函數的時域表達形式,以及它們的時域窗形狀和頻域特征。這三種窗分別是矩形窗、漢寧窗和平頂窗。它們的時域表達形式如下表所示,並且假設時間窗的范圍為0≤t≤T,如果時間t的取值區間不同,窗函數的表達形式也會略有差異。

矩形窗、漢寧窗和平頂窗的時域形狀和頻域特征如下圖所示,可以看出,窗函數不同,時域和頻域都是不同的。

頻譜特征

 

為了減少泄漏,可采用不同的窗函數來進行信號截取,因而,泄漏與窗函數的頻譜特征相關的。窗函數的典型頻譜特征如下圖所示:

窗函數的典型頻譜特征

 

各種窗函數頻譜特征的主要差別在於:主瓣寬度(也稱為有效噪聲帶寬,ENBW)、幅值失真度、最高旁瓣高度和旁瓣衰減速率等參數。加窗的主要想法是用比較光滑的窗函數代替截取信號樣本的矩形窗函數,也就是對截斷后的時域信號進行特定的不等計權,使被截斷后的時域波形兩端突變變得平滑些,以此壓低譜窗的旁瓣。因為旁瓣泄露量最大,旁瓣小了泄露也相應減少了。不同的窗函數具有不同的頻譜特征,下表列出了一些常用窗函數的特征。

主瓣寬度主要影響信號能量分布和頻率分辨能力。頻率的實際分辨能力為有效噪聲帶寬乘以頻率分辨率,因此,主瓣越寬,有效噪聲帶寬越寬,在頻率分辨率相同的情況下,頻率的分辨能力越差。如下圖所示,紅色為平頂窗(3.77∆f),黑色為漢寧窗(1.5∆f),藍色為信號頻率,可以明顯地看出,主瓣越窄,頻率分辨越准確。對於窗函數寬的主瓣而言,如果有鄰近的小峰值頻率,則越難辨別出來。

旁瓣高低及其衰減率影響能量泄漏程度(頻譜拖尾效應)。旁瓣越高,說明能量泄漏越嚴重,衰減越慢,頻譜拖尾越嚴重。對50.5Hz(頻率分辨率為1Hz)的信號分別施加矩形窗(紅色)、漢寧窗(綠色)和平頂窗(藍色),用對數顯示幅值,加窗后的結果如下圖所示。從圖中可以看出,矩形窗的頻譜拖尾更嚴重。

相對而言,如果旁瓣能量較小,高度趨於零,使得信號能量相對集中於主瓣,則較為接近真實的頻譜。不同的窗函數對信號頻譜的影響是不一樣的,這主要是因為不同的窗函數,產生泄漏的大小不一樣,頻率分辨能力也不一樣。



4. 加窗函數的原則

加窗函數時,應使窗函數頻譜的主瓣寬度應盡量窄,以獲得高的頻率分辨能力;旁瓣衰減應盡量大,以減少頻譜拖尾,但通常都不能同時滿足這兩個要求。各種窗的差別主要在於集中於主瓣的能量和分散在所有旁瓣的能量之比。

窗的選擇取決於分析的目標和被分析信號的類型。一般說,有效噪聲頻帶越寬,頻率分辨能力越差,越難於分清有相同幅值的鄰近頻率。選擇性(即分辨出強分量頻率鄰近的弱分量的能力)的提高與旁瓣的衰減率有關。通常,有效噪聲帶寬窄的窗,其旁瓣的衰減率較低,因此窗的選擇是在二者中取折衷。

因而,窗函數的選擇一般原則如下

1. 如果截斷的信號仍為周期信號,則不存在泄漏,無須加窗,相當於加矩形窗。

2. 如果信號是隨機信號或者未知信號,或者有多個頻率分量,測試關注的是頻率點而非能量大小,建議選擇漢寧窗,像LMS Test.Lab中默認加的就是漢寧窗。

3. 對於校准目的,則要求幅值精確,平頂窗是個不錯的選擇。

4. 如果同時要求幅值精度和頻率精度,可選擇凱塞窗。

5. 如果檢測兩個頻率相近、幅值不同的信號,建議用布萊克曼窗。

6. 錘擊法試驗力信號加力窗,響應可加指數窗。



5. 模態測試所用窗函數

所有的窗函數都會使時域信號的開始和結束端歸零。用於錘擊試驗的“力窗”和“指數窗”卻是個例外。

力窗是單位增益的窗函數(實質是部分矩形窗),作用於脈沖激勵發生的那部分時段。加力窗是為了消除可能來自於力錘激勵通道的噪聲。通常,設置力窗的寬度約為數據樣本窗口的2-10%,使得力脈沖完全位於這個單位增益窗內,力窗之外的時域樣本紀錄則被加權置零。需要着重注意的是,力窗從來不能消除測試過程中可能出現的二次連擊的影響。使用力窗消除連擊所造成的影響,將嚴重扭曲輸入力譜。

指數窗通常用於在采樣時間長度內信號沒有完全衰減到零的響應信號。指數窗的應用強制響應信號更好地滿足FFT變換的周期性要求。通常,對於小阻尼結構,錘擊激起的結構響應在采樣時間長度的末端不會完全衰減到零。這種情況下,變換后的數據將遭受泄漏影響。為了將泄漏減少到最低程度,需要對測量響應數據施加指數窗,如下圖所示。

對於錘擊法測試,應盡量實現無泄漏的測量,即響應不需要加指數窗,因為加窗之后,相對而言,阻尼會是過估計,使得估計出來的阻尼大於實際的阻尼。因此,可以通過增加采樣時間,使響應有足夠的時間衰減,以避免加窗。

對於激振器測試最常用是矩形窗和漢寧窗。需要明白的是所有窗函數都會使數據失真。需要記住的是窗函數總是會使測到的峰值發生失真,並且總會給出這樣的假象:測量得到的FRF中的結構阻尼大於結構實際存在的阻尼,而這兩個非常重要的屬性剛好是我們需要從FRF中估計的屬性。矩形窗會使得幅值失真36%,漢寧窗失真16%。FRF的幅值失真從而使得阻尼估計不准確。



6. 窗函數帶來的影響

窗函數會使信號幅值失真,那么窗函數對計算RMS值是否有影響呢?由於加窗使得頻率峰值失真,因此,如果計算峰值處的RMS值,必然也是有影響的。如下圖所示,由於峰值高低不一樣,則對應的RMS也不一樣。但如果計算窄帶RMS或整個頻帶的總RMS值呢?

從上圖可以看出,不同的窗函數下,計算19-87Hz內的總有效值都為0.71,因此,對於不同的窗函數下,計算總有效值是沒有影響的。因為能量雖然泄漏到旁瓣上,但總的能量是不變的。

從第3小節中對比原始信號和加窗后的信號可以看出,信號的能量在起始和結束位置都計權置零,因而,從能量的角度來考慮,加窗后的信號能量要比加窗之前的能量小。因此,如果對信號施加了窗函數,則頻譜還需要進行修正。修正分幅值修正和能量修正,如果是單條譜線則為幅值修正;如果是寬帶則為能量修正。關於加窗后的頻譜修正,請參考《簡單總結FFT變換的幅值和能量校正》。但需要記住一點,這個工作,通常商業軟件會自動處理,無須人工處理,只需要知道有這么一步工作即可。

在《01.04:錘擊測試使用指數窗會引起什么問題嗎?》一文中曾經指出,錘擊法測試對響應加指數窗以最小化泄漏是必須的,但是如果加大的指數窗函數可能會扭曲了真實的FRF,致使在FRF的密集模態很難觀測到。因此,指數窗的使用,雖然是數字信號處理必須考慮的事項,但是當估計小阻尼結構和密集模態時,如果使用不當,將會引起一些嚴重的問題。

每個窗函數對數據的頻域描述都有影響。一般而言,窗函數將降低函數峰值幅值的精度,並且使得最終得到的阻尼似乎比實際真實存在的阻尼要更大。盡管這些誤差完全是不想要的,但相比泄漏造成的嚴重失真而言,它們還是更能讓人接受。

擴展閱讀

1.什么是泄漏?

2.何時、何地應用何種的窗函數?

3.簡單總結FFT變換的幅值和能量校正

4.理解FFT分析的加窗和重疊

5.01.04:錘擊測試使用指數窗會引起什么問題嗎?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM