摘 要: 為了便于計算機輔助計算復雜的連續信號頻譜,經常采用DFT方法。DFT不僅能反映信號的頻域特征更便于用計算機處理。這里先對連續非周期信號做離散化處理,然后截短得到有限長序列,最后做DFT變換。針對常用信號DFT譜分析的原理及譜分析中的相關問題進行了較為深入的探討,并結合實例用Matlab仿真軟件進行了分析和驗證。
關鍵詞: DFT; 頻譜分析; Matlab; 矩形窗; Hamming窗
中圖分類號:TN911.72?34 文獻標識碼: A 文章編號: 1004?373X(2013)11?0053?04
0 引 言
頻譜分析在數字信號處理中用途廣泛:如濾波、檢測等方面,這些都需要DFT(Discrete Fourier Transform)運算[1?3]。信號的Fourier變換建立了信號的時域與頻域之間的一一對應關系,可以借助DFT來分析。有限長序列的DFT可以由數字方法直接計算,且DFT存在快速算法,便于用計算機處理[4?6]。本文介紹具體的連續非周期信號結合Matlab軟件來分析其頻譜。
1 連續非周期信號譜DFT分析
在已知連續信號數學解析式的情況下,非周期信號的頻譜可以根據Fourier變換的定義進行解析計算。實際應用中的多數信號不存在數學解析式,信號的頻譜無法利用傅里葉分析公式方法直接計算,一般需采用數值方法進行近似計算分析頻譜,在進行數字計算時,需對計算的連續變量進行離散化。由于連續非周期信號[x(t)]的頻譜函數[X(jω)]是連續函數,因此,需要對其進行離散化處理得到[x[n]]以近似分析相應的頻譜。通過建立序列[x[n]]的離散Fourier變換[X[m]]與連續非周期信號[x(t)]的Fourier變換[X(jω)]之間的關系,可以利用DFT對連續非周期信號頻譜進行近似分析,此近似分析過程中一般將會出現三種現象:混疊現象、泄漏現象和柵欄現象[7?8]。這些現象與應用中信號和DFT的參數選擇有關。下面分別討論近似過程中可能出現的問題及其解決方法。
2 DFT分析過程中出現的若干問題
2.1 混疊現象
由DFT計算出的頻譜是信號[x(t)]的頻譜[X(jω)]周期化的抽樣值,如果連續信號不是帶限信號,或者抽樣頻率不滿足抽樣定理,在連續信號離散化時,就會出現信號頻譜的混疊。解決連續信號離散化過程中的頻譜混疊主要有兩種方法:對于帶限連續信號,只要提高抽樣頻率使之滿足時域抽樣定理;對于非帶限連續信號,可根據實際信號對其進行低通濾波,使之成為帶限信號。工程實際中的連續信號一般都不是帶限信號,連續信號在抽樣前通常都經過一個模擬低通濾波器(稱為抗混疊濾波器)進行低通濾波,以減少混疊誤差,提高頻譜分析精度。
2.2 泄漏現象
對連續非周期信號的采樣序列[x[n]]進行DFT運算時,時間長度總是取有限值,在將信號截短即時域加窗處理的過程中,出現了分散的擴展譜線的現象,稱為頻譜泄漏。對離散序列的加窗實際上是將離散序列與窗函數相乘,加窗后信號的頻譜是加窗前信號的頻譜與窗函數頻譜的卷積,造成截短后信號的頻譜與截短前信號的頻譜不同,所得的頻譜在原來沒有頻譜的區間出現了頻譜。原來比較尖銳的譜峰變得比較平緩,當兩個不同頻率的譜峰靠得比較近時,可能顯現不出兩個明顯的峰值。特別是強信號譜的旁瓣可能淹沒弱信號的主譜或誤認為是另一假信號的主譜線。矩形窗的旁瓣幅度大,譜間干擾嚴重。頻譜泄漏使頻譜變模糊,分辨率(事實上通常規定DFT的頻率分辨率為[fsN],[fs]為采樣頻率,[N]是指信號[x[n]]的有效長度)變差,泄漏程度與窗函數幅度譜主瓣寬度有關。窗型一定,窗口越長,主瓣越窄,頻譜泄漏越小;窗口長度一定,矩形窗主瓣最窄,頻譜泄漏最小,但其旁瓣的幅度最大。因此為了盡量減少泄漏現象,應選用旁瓣幅度小、主瓣窄,即“泄漏”小的窗函數。相對而言,布萊克曼窗的旁瓣幅度比矩形窗小,譜間干擾小,但其主瓣過渡帶寬,分辨率差。采樣頻率或采樣周期是在滿足混疊誤差前提下選取的,當采樣頻率或采樣周期確定后,適當增加窗口長度有利于減小泄漏誤差。
2.3 柵欄現象
DFT得到的頻譜[X[m]]只能是連續非周期信號頻譜[X(jω)]上的有限離散頻點采樣,由于[X[m]]是離散序列,因而無法反映抽樣點之間的細節,就如同隔著百葉窗觀察窗外的景色,這種現象稱為柵欄現象。柵欄現象是利用DFT分析連續非周期信號頻譜過程中無法克服的現象,有時頻譜中的某些重要信息恰好就在抽樣點之間,將被錯過,而檢測不出。為了改善柵欄現象,把被“柵欄”擋住的頻譜分量檢測出來,可在原記錄序列后面補零,增加DFT的長度,即增加頻域[X(jω)]上的采樣點數N,改變離散譜線的分布,就可能檢測出原來看不到的頻譜分量。
3 利用DFT進行譜分析的參數選擇
在利用DFT分析連續時間信號的頻譜時,涉及頻譜混疊、頻率泄漏及柵欄現象。頻率混疊與連續信號的時域抽樣間隔有關,頻率泄漏與信號的時域加窗截短的長度及窗型有關,柵欄現象與DFT的點數有關。在大多數情況下,一般已知待分析連續信號的最高頻率,以及希望的DFT分析的頻率分辨率。下面根據信號的Fourier變換的理論,討論利用DFT進行譜分析的參數(抽樣頻率、持續時間、樣點數等)選擇的原則。
首先確定信號抽樣頻率[fs],[fs]應滿足時域抽樣定理,即[fs≥2fm,]其中[fm]為待分析的連續信號的最高頻率,抽樣間隔T應滿足:
[T=1fs≤12fm] (1)
然后確定抽樣信號的長度[N],[N]應滿足頻率分辨率[Δf]的要求,即:
[N≥cfsΔf] (2)
矩形窗時取[c=1],Hamming窗時取[c=2]。
根據譜線間隔[Δfd]確定DFT的點數[L],即:
[L≥fsΔfd] (3)
[L]一般取滿足式(3)的2的整數冪次。
4 結合實例分析[9?10]
實例1:已知一連續信號為[x(t)=cos2πf0t+][cos2πf1t],其中[f0]=100 Hz,[f1]=130 Hz。現以頻率[fs]=600 Hz對該信號進行抽樣,試利用DFT分析其頻譜。
由于抽樣頻率[fs]大于信號[x(t)]的最高頻率[f1]的2倍,故抽樣過程沒有造成混疊,抽樣后的序列[x[n]=x(t)t=nT=][cos2πf0nfs+cos2πf1nfs]。
由于[x[n]]為無限長序列,可采用矩形窗對其進行加窗截短處理。為了能夠分辨這兩個間隔為[Δf=f1-f0=]30 Hz的相鄰譜峰,由式(2)可得矩形窗的長度[N]應滿足[N]≥20。現應用Matlab軟件進行頻譜分析。分別取[N=]10和[N=]20時,由DFT計算出的頻譜做對比,如圖1所示。
由于[N]=10不滿足式(2),所以由由圖1(a)幾乎分辨不出信號中兩個頻率分量。而由圖1(b)可見,當信號的長度滿足式(2)時,可清晰地分辨出信號中的兩個不同頻率分量。
實例2:已知一連續信號為[y(t)=cos2πf0t+][0.15cos2πf1t],其中[f0]=50Hz,[f1]=100 Hz。現以頻率[fs]=400 Hz對該信號進行抽樣,試利用DFT分析其頻譜。采樣頻率滿足抽樣定理,所以采樣后的頻譜不會產生混疊現象,但由于信號[y(t)]中存在一個較弱的頻率分量[f1],若采用矩形窗函數加窗,則由于其旁瓣泄漏較大,很難檢測出信號[y(t)]幅度較小的頻率分量[f1],因而采用Hamming窗函數,如圖2所示。
圖2 (c),圖2(d)與圖2(a),圖2(b)相比,Hamming窗以增加主瓣寬度來降低旁瓣能量,檢測出較弱的頻率分量[f1]。在圖2 (c),圖2(d)中當采用同一種窗時,截取信號長度[N]=30個樣點時,由于所取的數據點較少,頻率分辨率低,由DFT計算出的頻譜仍不能顯示幅度較小的頻率分量。當截取信號[N]=50個樣點時,能夠清楚地顯示出幅度較小的頻率分量。
柵欄現象是利用DFT分析連續頻譜過程中無法克服的現象,有時頻譜中的某些重要信息恰好就在抽樣點之間。為了改善柵欄現象,以觀察到頻譜中更多的細節,常用的方法是在截短后的序列后補0,構成一個[L>N]的序列,序列補0后對應的頻譜函數不變,但對序列進行[L]點的DFT時,兩個相鄰抽樣點之間的譜線間隔[Δfd]就變為[fsL],因為抽樣頻率[fs]不變,[L>N],所以圖1和圖2是將[N]點截短信號補0后[L]=512點可減小頻譜分析時的譜線間隔,從而所計算出頻譜將會顯示更多的細節。
圖3分別給出[N]=20,[L]=32,64,128,256時,利用矩形窗計算出的實例1中的信號的頻譜。
從圖3中可以看出,隨著補0的增加,可以更多地顯示出頻譜的信息,從而減少了柵欄現象。
需要說明一點通過補0只能提高信號頻率的顯示分辨率。換句話說,如果連續信號在離散化或時域加窗過程中,由于混疊或泄漏等過程已經造成信號頻譜中信息的失真,則無論怎么補0也無法再恢復已損失的信息。
5 結 語
本文利用Matlab實現連續信號DFT頻譜的計算。可見利用Matlab軟件分析頻譜方便、快捷,減少了計算量。對連續非周期信號先要離散化,然后截短處理,最后做DFT分析。在這些近似分析過程中可能會出現三種現象,避免及減少這些問題,只有合理選擇DFT的一些參數,可以完全使分析結果在工程誤差允許范圍內。
參考文獻
[1] 李莉.數字信號處理原理和算法實現[M].北京:清華大學出版社,2010.
[2] 漢澤西,姚英彪.用DFT分析正弦信號頻譜時應注意的幾個問題[J].西安石油學院學報,2003,18(2):67?70.
[3] 井敏英,郭佳林,李大偉,等.連續時間信號頻譜分析研究及Matlab實現[J].大眾科技,2011(4):42?43.
[4]陳懷琛.數字信號處理教程:Matlab釋義與實現[M].北京:電子工業出版社,2004.
[5]林愛英,滕紅麗,袁超,等.DFT在信號譜分析中的應用[J].安徽工業大學學報,20011,28(2):192?196.
[6] 吳鎮揚.數字信號處理[M].2版.北京:高等教育出版社,2010.
[7] 陳后金.數字信號處理[M].2版.北京:高等教育出版社,2008.
[8] 黃寒華.關于滑動DFT算法中的頻譜泄漏問題的探討[J].現代電子技術,2007,30(24):202?204.
[9] 徐明遠,劉增力.Matlab仿真在信號處理中的應用[M].西安:西安電子科技大學出版社,2007.
[10] 張登奇,楊慧銀.信號的頻譜分析及Matlab實現[J].湖南理工學院學報,2010,23(3):29?33.