頻譜能量泄漏


轉載自https://mp.weixin.qq.com/s?__biz=MzI5NTM0MTQwNA==&mid=2247484164&idx=1&sn=fdaf2164306a9ca4166c2aa8713cacc5&scene=21#wechat_redirect

在做信號處理時,經常涉及到“泄漏”。那泄漏是什么,是什么原因造成了泄漏呢?在這將告訴您答案。

 

1.信號截斷

一次FFT分析截取1幀長度的時域信號,這1幀的長度總是有限的,因為FFT分析一次只能分析有限長度的時域信號。而實際采集的時域信號總時間很長,因此,需要將采樣時間很長的時域信號截斷成一幀一幀長度的數據塊。這個截取過程叫做信號截斷

 

假設有一段10s的時域信號,取1幀的長度T=1s,無重疊,則該信號將被截斷為10幀,如下圖所示。按此規律進行FFT計算,將得到10個瞬時頻譜,如果將這些瞬時頻譜進行平均,那么平均次數為10次,最終的FFT分析結果為這10個瞬時頻譜的平均結果。


  

信號截斷分為周期截斷和非周期截斷。周期截斷是指截斷后的信號為周期信號,而非周期截斷是指截斷后的信號不再是周期信號,哪怕原始信號本身是周期信號。

 

2. 周期截斷

我們知道周期信號最明顯的特征是信號的起始和結束時刻的幅值相等,哪怕是一個周期。在這假設采樣時間很長的信號為單頻正弦波(周期信號),若1幀的時間長度等於這個正弦波周期的整數倍,那么,截斷后的信號仍為周期信號。取1幀的時間長度T等於原始信號的1個周期長度,那么截斷后的信號仍為周期信號,如下圖所示。


 

將這個截斷后的信號再重構,可以得到原始的正弦波,如下圖所示。


 

對截斷的這一幀信號做FFT分析,得到它的頻譜如下圖所示。從圖中可以看出,得到的頻率成分為原始信號的真實頻率,並且幅值與原始信號的幅值相等(100%幅值)。


 

假設原始信號的頻率為f Hz,則周期為1/f s。因為截取的時間長度T為信號周期的整數倍(假設為k倍),即

T=k/f

而頻率分辨率為1/T,即

f=1/Tf/k

因而,信號的頻率成分

f =k*f

即信號的頻率成分為頻率分辨率∆f的整數倍,也就是說頻譜圖中有一條譜線與信號的頻率成分相同,這也就是所謂的信號“壓譜線”。因而,對這個周期信號進行FFT分析時,信號的頻譜樣子與實際情況完全相同,與我們預期的樣子相同。

 

3. 周期截斷

倘若信號截斷的長度不為原始正弦信號周期的整數倍,那么,截斷后的信號則不為周期信號,哪怕原始信號是周期信號。並且現實世界中,我們進行FFT分析時,絕大多數情況都是非周期截斷。

 

對之前的正弦信號進行非周期截斷,如下圖所示。截斷后的信號起始時刻和結束時刻的幅值明顯不等,將這個信號再進行重構,在連接處信號的幅值不連續,出現跳躍,如圖中黑色圓圈區域所示。


 

對截斷后的信號做FFT分析,得到的頻譜如下圖所示。這時的FFT頻譜已遠遠不是我們預期的那種單條離散譜線了(周期截取的頻譜樣子)。對比周期截斷的頻譜,可以看出,此時頻譜在整個頻帶上發生“拖尾”現象。峰值處的頻率與原始信號的頻率相近,但並不相等。另一方面,峰值處的幅值已不再等於原始信號的幅值,為原始信號幅值的64%(矩形窗的影響)。而幅值的其他部分(36%幅值)則分布在整個頻帶的其他譜線上。


 

由於非周期截斷的時間長度不等於信號周期的整數倍,因此,信號的頻率成分f≠k*f,也就是說,在頻譜圖中,沒有一條譜線與信號的頻率成分完全相同。

 

4. FFT變換

在作進一步說明之前,讓我們回顧一下FFT變換。FFT變換要求為:信號要么從-∞到+∞ ,要么為周期信號。現實世界中,不可能采集時間從-∞到+∞的信號,只能是有限時間長度的信號。

 

回想以前學過有關傅立葉級數的一些基本知識。對於一條單頻正弦波,我們知道用傅立葉級數描述該信號是非常容易的。通常用傅立葉級數中的一項就可以描述了,形如Asinωt。但是對於一些信號,比如矩形脈沖信號,其傅立葉級數展開會是什么樣的呢?我想你應該記得傅立葉級數展開項是一系列不同頻率和不同幅值的正弦信號之和。對於矩陣脈沖,傅立葉級數要包含很多項,才能近似這個信號,這是因為矩形脈沖信號不連續,不像平滑的正弦波。

 

5. 泄漏

由於信號的非周期截斷,導致頻譜在整個頻帶內發生了拖尾現象。這是非常嚴重的誤差,稱為泄漏,是數字信號處理所遭遇的最嚴重誤差。但是為什么會出現這種誤差呢?原始實際信號為一條單頻正弦波,它的頻譜怎么會變得如此失真?這個問題很容易解釋。這是因為截斷后的信號不再是周期信號。

 

對比一下正確的頻譜與發生泄漏的頻譜,如下圖所示,可以看出,泄漏后的頻譜的幅值更小,頻譜拖尾更嚴重。當截斷后的信號不為周期信號時,就會發生泄漏。而現實世界中,在做FFT分析時,很難保證截斷的信號為周期信號,因此,泄漏不可避免。


 

現在返回到非周期截斷的正弦波,可以看出在截斷時間長度內沒有捕捉到整數倍個周期正弦波,導致波形發生了失真,似乎在信號周期的末端波形出現了不連續。這就解釋了為什么FFT會在整個頻帶上發生拖尾現象了。本質上,這需要多個傅立葉展開項(多條譜線)去近似這個明顯不連續的信號,因此,頻譜出現了拖尾現象。

 

6. 窗函數

為了將這個泄漏誤差減小到最小程度(注意我說是的減少,而不是消除),我們需要使用加權函數,也叫。加窗主要是為了使信號似乎更好地滿足FFT處理的周期性要求,減少泄漏。(關於窗函數,完全可以寫一篇長長的文章了,在這只簡單介紹)

 

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


 

希望通過以上的解釋說明,使您明白了什么是泄漏。


免責聲明!

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



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