整理自教學資料
fft在分析頻譜分析的時候,會有下面四個方面的誤差:
(1)頻譜混疊
奈奎斯特定理已被眾所周知了,所以幾乎所有人的都知道為了不讓頻譜混疊,理論上采樣頻譜大於等於信號的最高頻率。那和時域上聯系起來的關系是什么呢?
設定采樣點數為N,采樣頻率fs,最高頻率fh,故頻譜分辨率f=fs/N,而fs>=2fh,所以可以看出最高頻率與頻譜分辨率是相互矛盾的,提高頻譜分辨率f的同時,在N確定的情況下必定會導致最高頻率fh的減小;同樣的,提高最高頻率fh的同時必會引起f的增大,即分辨率變大。
(2)柵欄效應:
在進行DFT的過程中,最后需要對信號的頻譜進行采樣。經過這種采樣所顯示出來的頻譜僅在各采樣點上,而不在此類點上的頻譜都顯示不出來,即使在其他點上有重要的峰值也會被忽略,這就是柵欄效應。這一效應對於周期信號尤為重要,因其頻譜是離散的,如處理不當這些離散譜線可能不被顯示。
不管是時域采樣還是頻域采樣,都有相應的柵欄效應。只是當時域采樣滿足采樣定理時,柵欄效應不會有什么影響。而頻域采樣的柵欄效應則影響很大,“擋住”或丟失的頻率成分有可能是重要的或具有特征的成分,使信號處理失去意義。減小柵欄效應可用提高采樣間隔也就是頻率分辨力的方法來解決。間隔小,頻率分辨力高,被“擋住”或丟失的頻率成分就會越少。但會增加采樣點數,使計算工作量增加。解決此項矛盾可以采用如下方法:在滿足采樣定理的前提下,采用頻率細化技術(ZOOM),亦可用把時域序列變換成頻譜序列的方法。
在對周期信號DFT處理時,解決柵欄效應應以致解決泄露效應的一個極為有效的措施是所謂“整周期截取”。
而對於非周期信號,如果希望減小柵欄效應的影響,盡可能多地觀察到譜線,則需要提高頻譜的分辨率。
(3)細化技術
什么是細化技術:
細化技術是一種一定頻率范圍內提高頻率分辨率的測量技術,也叫細化傅里葉分析。即在所選擇的頻帶 內,進行與基帶分析有同樣多的譜線的分析。從而能大大提高頻率分辨率。
選帶分析時頻率分辨率為:
選帶傅氏分析(細化)的主要步驟是:
(a) 輸入信號先經模擬抗混濾波,濾去所需分析的最高頻率即基帶分析中的最高分析頻率以上的頻率成分;
(b) 經過模數轉換,變為數字信號序列;
(c) 將采樣信號經數字移頻,移頻后的Fk處的譜線將落在頻率軸上的零頻處;
(d) 將移頻后的數字信號再經數字低通濾波,濾去所需頻帶以外的信號;
(e) 對濾波后的信號的時間序列進行重采樣,此時分析的是一段小頻段為原來的1/M。這樣在一小頻段上采樣,采樣量還是N,但采樣時間加了M倍,提高了分辯率。
細化FFT技術的應用:
一些不能增加總的采樣點數而分辨率又要求精細的場合,細化FFT分析是很有用的。例如:
(a)區分頻譜圖中間距很近的共振尖峰,用常規分析不能很好分開時,用細化分析就能得到滿意的結果。
(b)用於增加信噪比,提高譜值精度,這是由於細化時采用了數字濾波器,混疊與泄漏產生的誤差都非常小;(c ) 用於分離被白噪聲淹沒的單頻信號,由於白噪聲的功率譜與頻率分辨率有關,每細化一個2倍,白噪聲的功率譜值降低3dB,若細化256倍,白噪聲功率譜值即下降24 dB,而單頻信號的譜線就會被突出出來。
(4)頻譜泄露
截斷信號時域上相當於是乘以了rectangular window,於是造成了頻譜泄漏的問題。泄漏的原因來自兩方面。
第一:輸入頻率不是fs/n的整數倍,因為dft只能輸出在fs/n的頻率點上的功率,所以當輸入頻率不在fs/n的整數倍時,在dft的輸出上就沒有與輸入頻率相對應得點(dft輸出是離散的),那么輸入頻率就會泄漏到所有的輸出點上,具體的泄漏分布取決於所采用的窗的連續域復利葉變換,對於沒有使用窗的,相當於使用了矩形窗,矩形窗在進行連續傅立葉變換在一般的信號與系統書上都有。
第二:而對於非矩形窗,窗本身就會產生一定的泄漏,是通過加大主瓣的寬度來降低旁瓣的幅度,通常主瓣的寬度變成了矩形窗的兩倍,例如當我們輸入一個fs/n的整數倍的輸入頻率時,經過非矩形窗,dft輸出會在兩個fs/n的頻點上有功率。
見參考書:lyon的understanding DSP.
解決辦法,可以擴大窗函數的寬度(時域上的寬了,頻域上就窄了,(時域頻域有相對性),也就是泄露的能量就小了),或者不要加矩形的窗函數,可以加緩變的窗函數,也可以讓泄露的能量變下。
因為泄露會照成頻譜的擴大,所以也可能會造成頻譜混疊的現象,而泄露引起的后果就是降低頻譜分辨率。
頻譜泄露會令主譜線旁邊有很多旁瓣,這就會造成譜線間的干擾,更嚴重就是旁瓣的能量強到分不清是旁瓣還是信號本身的,這就是所謂的譜間干擾。
(5)旁瓣效應:
補零對頻譜的影響:
進行zero padding只是增加了數據的長度,而不是原信號的長度。就好比本來信號是一個周期的余弦信號,如果又給它補了9個周期長度的0,那么信號並不是10個周期的余弦信號,而是一個周期的余弦加一串0,補的0並沒有帶來新的信息。其實zero padding等價於頻域的sinc函數內插,而這個sinc函數的形狀(主瓣寬度)是由補0前的信號長度決定的,補0的作用只是細化了這個sinc函數,並沒有改變其主瓣寬度。而頻率分辨率的含義是兩個頻率不同的信號在頻率上可分,也就要求它們不能落到一個sinc函數的主瓣上。所以,如果待分析的兩個信號頻率接近,而時域長度又較短,那么在頻域上它們就落在一個sinc主瓣內了,補再多的0也是無濟於事的。
補零與離散傅里葉變換的分辨率:
離散傅里葉變換(DFT)的輸入是一組離散的值,輸出同樣是一組離散的值。在輸入信號而言,相鄰兩個采樣點的間隔為采樣時間Ts。在輸出信號而言,相鄰兩個采樣點的間隔為頻率分辨率fs/N,其中fs為采樣頻率,其大小等於1/Ts,N為輸入信號的采樣點數。這也就是說,DFT的頻域分辨率不僅與采樣頻率有關,也與信號的采樣點數有關。那么,如果保持輸入信號長度不變,但卻對輸入信號進行補零,增加DFT的點數,此時的分辨率是變還是不變?
另外,增加0可以更細致觀察頻域上的信號,但不會增加頻譜分辨率,從時域來看,假定要把頻率相差很小的兩個信號區分開來,直觀上理解,至少要保證兩個信號在時域上相差一個完整的周期,也即是相位相差2*pi。舉個例子,假定采樣頻率為1Hz,要將周期為10s的正弦信號和周期為11s的正弦信號區分開來,那么信號至少要持續110s,兩個信號才能相差一個周期,此時周期為10s的那個信號經歷的周期數為11,而11s的那個信號經歷的周期書為10。轉化到頻域,這種情況下,時域采樣點為110,分辨率為1/110=0.00909,恰好等於兩個信號頻率只差(1/10-1/11)。如果兩個信號在時域上不滿足“相差一個完整周期“的話,補零同樣也不能滿足“相差一個完整周期”,即分辨率不發生變化。另外,從信息論的角度,也很好理解,對輸入信號補零並沒有增加輸入信號的信息,因此分辨率不會發生變化。
補零到底會帶來什么樣的影響呢?因為DFT可以看做是對DTFT的采樣,補零僅是減小了頻域采樣的間隔。這樣有利於克服由於柵欄效應帶來的有些頻譜泄露的問題。也就是說,補零可以使信號能在頻域被更細致地觀察。如果不滿足上述“至少相差一個完整周期”的要求,即便是如DTFT一般在頻域連續,也無法分辨出兩個信號。
那么,影響DFT分辨率最本質的物理機制是什么呢?在於DFT的積累時間,分辨率為積累時間T的倒數。這點從數學公式上可以很容易得到:
fs/N=1/(N*Ts)=1/T
舉個例子說,如果輸入信號的時長為10s,那么無論采樣頻率為多少,當然前提是要滿足奈奎斯特定理,其分辨率為1/10=0.1Hz。
