什麼是頻譜泄露?
頻譜泄露與傅立葉變換尤其是離散時間傅立葉變換有關,對於頻譜泄露,通常的解釋是這樣的:信號為無限長序列,運算需要截取其中一部分(截斷),於是需要加窗函式,加了窗函式相當於時域相乘,於是相當於頻域卷積,於是頻譜中除了本來該有的主瓣之外,還會出現本不該有的旁瓣,這就是頻譜泄露!為了減弱頻譜泄露,可以採用加權的窗函式,加權的窗函式包括平頂窗、漢寧窗、高斯窗等等。而未加權的矩形窗泄露最為嚴重。
為了說明頻譜泄露,一下子引入了時域、頻域、窗函式、卷積、主瓣、旁瓣等等抽象的概念。
頻譜泄露有這么複雜嗎?頻譜泄露到底是什麼意思?
一句話,頻譜泄露就是分析結果中,出現了本來沒有的頻率分量。比如說,50Hz的純正弦波,本來只有一種頻率分量,分析結果卻包含了與50Hz頻率相近的其它頻率分量。
更簡單的描述是:分析結果與實際不一致!
在實際問題中遇到的離散時間序列x(n)通常是無限長序列,因而處理這個序列的時候需要將它截短。截短相當於將序列乘以窗函式w(n)。根據頻域卷積定理,時域中x(n)和w(n)相乘對應於頻域中它們的離散傅立葉變換X(jw)和W(jw)的卷積。
為何會出現頻譜泄露?
我們把無限長序列分為兩種情況:1.無限長序列為非周期信號
非周期的無限長序列,任意截取一段有限長的序列,都不能代表實際信號,分析結果當然與實際信號不一致!
道理是顯而易見的:
你分析的信號根本就不能代表實際信號,結果當然也與實際信號不一致,更準確的說法,結果是錯誤的,造成錯誤結果的原因是分析方法是錯誤的!
2.無限長序列為周期信號
對於周期性的無限長序列,假設截取的是正好一個或整數個信號周期的序列,這個有限長序列就可以代表原無限長序列,假設分析的方法得當的話,分析結果應該與實際信號一致!
這裡,我們作了兩個假設,第二個假設是偉大的傅立葉作出的偉大論斷!是成立的!
如果第一個假設也成立,是不是就不會發生頻譜泄露呢?
答案是肯定的!
從無限長序列中截取一個或整數個周期,我們稱為整周期截斷,反之,稱為非整周期截斷。
整周期截斷,不會造成頻譜泄露!
非整周期截斷,必然造成頻譜泄露!
換言之:
整周期截斷是不發生頻譜泄露的充分且必要條件!或非整周期截斷是發生頻譜泄露的充分且必要條件!
因此,x(n)截矩後的頻譜不同於它以前的頻譜。
為了減小頻譜“泄露”的影響,往往在FFT處理中採用加權技術,典型的加權序列有Hanning、Blackman、Gaussian等窗序列。此外,增加窗序列的長度也可以減少頻譜“泄露”。
小說幾句。時域上乘上窗函式,相當於頻域進行卷積。長度為無窮長的常數窗函式,頻域為delta函式,卷積後的結果和原來一樣。如果是有限矩形窗,頻域是Sa函式,旁瓣電平起伏大,和原頻譜卷積完,會產生較大的失真。
窗的頻譜,越像delta函式(主瓣越窄,旁瓣越小),頻譜的還原度越高。於是,就產生了那么多bt的窗函式。
加窗就不可避免頻譜泄漏,典型的加權序列有Hanning、Blackman、Gaussian等窗序列主要是為了降低
降低旁瓣,對於降低頻譜泄漏效果遠不如增加窗序列的長度明顯吧。
周期信號加窗後做DFT仍然有可能引起頻譜泄露,設fs為採樣頻率,N為採樣序列長度,分析頻率為:m*fs/N(m=0,1....),以cos函式為例,設其頻率為f0,如果 f0不=m*fs/N,就會引起除f0以外的其他m*fs/N點為非零值,即出現了泄露。
DFT作為有限長的運算,對於無限長的信號必須要進行一定程度的截斷,既然信號已經不完整了,那么截斷後的信號頻譜肯定就會發生畸變,截斷由窗函式來完成,實際的窗函式都存在著不同幅度的旁瓣,所以在卷積時,除了離散點的頻率上有幅度分量外,在相鄰的兩個頻率點之間也有不同程度的幅度,這些應該就是截斷函式旁瓣所造成的