魏少明,林應斌,王 俊
(北京航空航天大學 電子信息工程學院,北京 100191)
數(shù)字信號處理是20 世紀中葉發(fā)展起來的一門以微積分、差分方程等數(shù)學知識為基礎的工程科學技術(shù)。智能制造、人工智能和航空航天等新產(chǎn)業(yè)、新經(jīng)濟的快速發(fā)展對數(shù)字信號處理教學培養(yǎng)提出了新的要求[1]。
在數(shù)字信號處理的實際應用中,通常會面臨改變一個離散時間信號采樣率的問題,要么將它增加某個量,要么將它減少某個量。通過升降采樣處理,以不同的采樣率得到以同一個連續(xù)時間信號為基礎的新的離散時間序列,該過程稱為采樣率轉(zhuǎn)換[2-5]。
為實現(xiàn)對干擾信號的濾除,可以采用無限沖激響應(IIR)濾波器和有限沖激響應(FIR)濾波器兩種離散時間濾波器[6-8]。
FIR 濾波器有精確的線性相移,在設計上比IIR 有更多的可控之處,適用于各種實際情況[9]。FIR 濾波器的設計采用多項式逼近,具體方法包括窗函數(shù)法、頻率抽樣法和最佳逼近法。窗函數(shù)法比較簡單,它的頻率特性是理想頻率響應與窗函數(shù)傅里葉變換的周期卷積,因此,頻率特性主要取決于窗函數(shù)的類型和長度。頻率抽樣法比較直觀,但由于頻域采樣會造成時域混疊,為提高濾波器性能,可以在過渡帶加上0~1 之間的過渡點[10]。本實驗主要采用窗函數(shù)設計法[11]。FIR 濾波器的實現(xiàn),可以采用兩種方式實現(xiàn):時域卷積和差分方程[12]。
采樣是將一個信號(即時間或空間上的連續(xù)函數(shù))轉(zhuǎn)換成一個數(shù)值序列(即時間或空間上的離散函數(shù))。采樣定理指出,如果信號是帶限的,并且采樣頻率大于信號頻率的兩倍,即fs≥2fm,那么,原來的連續(xù)信號可以從采樣樣本x[n]中通過重構(gòu)公式完全恢復出來其中,采樣周期為T=1/fs[13]。在MATLAB 中提供了理想內(nèi)插器函數(shù)interp(x,I),調(diào)用方法是[y,h]=interp(x,I),該函數(shù)用于將數(shù)組x 中的信號以I 倍原采樣率重新采樣,所得重采樣數(shù)組y 是原數(shù)組的I倍長。其中,輸入?yún)?shù):x 為有限長離散信號序列,可以是實數(shù)也可以是復數(shù);I 為增采樣倍數(shù),要求為整數(shù)。輸出參數(shù):y 為重采樣數(shù)組,是原數(shù)組x 的I 倍長;h 為用于插值的濾波器系數(shù)。
濾波器是一種能夠讓某些頻率分量通過而拒絕其他頻率成分或?qū)δ承╊l率成分進行修正的系統(tǒng)。窗函數(shù)法設計FIR 濾波器時,在MATLAB 中提供的濾波設計函數(shù)有fir1(),此函數(shù)可以設計低通、高通、帶通和帶阻濾波器[14]。設計低通或帶通濾波器時,調(diào)用方法是b=fir1(N,Wn),其中,N 是濾波器的階數(shù);Wn 是歸一化截止頻率,對于低通濾波器,它是0 和1 之間的一個數(shù),對于帶通濾波器,它是包含通帶邊界的向量[Wn1,Wn2],其中0<Wn1<Wn2<1;向量b 是濾波器的脈沖響應序列。設計高通濾波器時,調(diào)用方法是b=fir1(N,Wn,’high’),其中N 為偶數(shù)。設計帶阻濾波器時,調(diào)用方法是b=fir1(N,Wn,’stop’),其中Wn 是一個雙元素向量。對于窗函數(shù)類型的選擇,調(diào)用方法是b=fir1(N,Wn,taper),其中taper 是長度為N+1 的窗函數(shù)序列,可以采用不同的MATLAB 函數(shù)來產(chǎn)生對應的窗函數(shù)序列taper=blackman(N),taper=hamming(N),taper=hanning(N),taper=chebwin(N),taper=kaiser(N,beta)。
MATLAB 中同時提供了另一種FIR 濾波器設計函數(shù)fir2,可以設計任意形狀幅度響應的FIR 濾波器。調(diào)用方法是b=fir2(N,fpts,mval),其中,fpts 是頻率點向量,在0 到1 范圍內(nèi)以遞增順序排列,其中采樣頻率被假定為2 Hz;mval 是對應頻率點的幅度值向量,和fpts的長度一樣;b 是長度為N+1 的脈沖響應序列。為使用不同的窗函數(shù)序列,調(diào)用方法是b=fir2(N,fpts,mval,taper),其中taper 為窗函數(shù)序列。
FIR 濾波器的實現(xiàn),可以采用兩種方式實現(xiàn):時域卷積和差分方程。FIR 濾波器是一個線性時不變系統(tǒng),其時域輸入和輸出關(guān)系可用卷積的方法描述,y[n]=x[n]×h[n]。對于FIR 濾波器,濾波器的脈沖響應h[n]為有限項,范圍從0 到M,信號x[n]通過濾波器的輸出為y[n]=x[n]×h[n]。通過卷積運算,可實現(xiàn)對輸入信號的濾波處理[15-16]。MATLAB 提供了計算線性卷積的函數(shù)conv,調(diào)用方法是w=conv(u,v),其中u 和v 是有限長度序列,w 是卷積結(jié)果序列。如果u 和v 的長度分別為N 和M,則w 的長度為N+M-1。FIR 濾波器的差分方程實現(xiàn),MATLAB 提供了濾波函數(shù)filter,調(diào)用方法是y=filter(b,a,x)。其中b為FIR 濾波器的脈沖響應序列,a 設置為1,x 為濾波器輸入信號,y 為濾波輸出信號。
信號的頻譜分析,通過快速傅里葉變換實現(xiàn)。MATLAB 提供了快速傅里葉變換函數(shù)fft(x,N),調(diào)用方法是X=fft(x,N),該函數(shù)用于實現(xiàn)離散信號序列x 的N點FFT 計算。輸入?yún)?shù):x 為有限長離散信號序列,可以是實數(shù)也可以是復數(shù);N 是FFT 變換的長度。當缺N時,就以x 序列的長度作為FFT 變換的長度。設置N后,當x 序列的長度大于N 時,取x 序列N 長作FFT 變換(即對x 序列進行截斷);當x 序列的長度小于N 時,在x 后補零至N 長再作FFT 變換。輸出參數(shù):X 為x 的N 點FFT 結(jié)果。MATLAB 同時提供了頻譜居中搬移函數(shù)fftshift(x),調(diào)用方法是y=fftshift(x),該函數(shù)用于將fft 函數(shù)結(jié)果的零頻率點移至頻譜中心。輸入?yún)?shù):x 為fft 函數(shù)計算結(jié)果。輸出參數(shù):y 為頻譜居中后的FFT 結(jié)果。
實驗要求學生能夠掌握實驗所涉及的增降采樣和濾波器設計與實現(xiàn)的原理,并能夠?qū)嶋H應用。學生需要編寫實驗程序,對不同的正弦信號進行增降采樣、濾波和頻譜分析。其中,信號的重采樣、濾波器設計、濾波器實現(xiàn)部分,有不同的MATLAB 實現(xiàn)方法,學生需要對不同的方法進行嘗試和分析,從而尋找綜合性能和效率最優(yōu)的方法。
結(jié)合實驗的數(shù)據(jù)運用MATLAB 繪制出實驗程序的曲線,提高學生對MATLAB 的編程能力及知識運用能力。結(jié)合曲線分析實驗中的問題,得出實驗結(jié)論,提高學生對采樣定理,增降采樣方法,濾波器設計與實現(xiàn),以及傅里葉變換的理解。
對不同頻率的正弦信號進行增降采樣、濾波和頻譜分析,繪制信號的時域波形和頻譜圖。
1.對模擬頻率為f0=3.5 kHz 的單頻正弦信號x(t)=cos(2πf0t)進行采樣,采樣率為fs=8 125 Hz,得到原始采樣信號x[n]=x(t)|nT,n=0,1,…,7 999。對采樣信號隔點抽取,形成2 倍降采樣信號y[n]=x[2n]。以采樣率2fs對x(t)進行采樣,得到2 倍采樣信號x0[n]=x(t)|nT0,n=0,1,…,通過重構(gòu)公式將原始連續(xù)信號重構(gòu)出來,以采樣率2fs對xr(t)進行采樣,獲得2 倍內(nèi)插信號z[n],n=0,1,…,15 999;通過理想內(nèi)插器函數(shù)interp 對x[n]進行2 倍重采樣,獲得2 倍內(nèi)插信號z1[n],n=0,1,…,15 999。
分析z[n]和z1[n]之間的差異,從中選擇最優(yōu)的2 倍內(nèi)插信號,并分析選擇的原因。繪制2 倍采樣信號與2倍內(nèi)插信號的時域波形以及波形差;繪制原始采樣信號、2 倍降采樣信號、2 倍采樣信號和2 倍內(nèi)插信號的頻譜圖。
2.對模擬頻率為f0=3.5 kHz 和f1=0.5 kHz 的雙頻正弦信號x(t)=cos(2πf0t)+cos(2πf1t)進行采樣,采樣率為fs=8 000 Hz,得到原始采樣信號x[n]=x(t)|nT,n=0,1,…,7 999。對采樣信號隔點抽取,形成2 倍降采樣信號y[n]=x[2n]。通過重構(gòu)連續(xù)信號,,以采樣率fs對y(rt)進行采樣,獲得內(nèi)插信號z[n],n=0,1,…,7 999。通過理想內(nèi)插器函數(shù)interp 對y[n]進行2 倍重采樣,獲得內(nèi)插信號z1[n],n=0,1,…,7 999。
分析z[n]和z1[n]之間的差異,從中選擇最優(yōu)的內(nèi)插信號,并分析選擇的原因。繪制原始采樣信號與內(nèi)插信號的時域波形以及波形差;繪制原始采樣信號、2 倍降采樣信號和內(nèi)插信號的頻譜圖。
3.模擬頻率為f0=3.5 kHz 的正弦原始信號,以及模擬頻率為f1=3.8 kHz 的正弦干擾信號,兩個信號在時域的混合信號為x(t)=cos(2πf0t)+cos(2πf1t),以采樣率fs=8 125 Hz 分別對正弦原始信號和混合信號進行采樣,得到原始采樣信號x0[n]=cos(2πf0t)|nT,混合采樣信號x[n]=x(t)|nT,n=0,1,…,7 999。設計一個FIR 濾波器,讓f0=3.5 kHz 的正弦信號通過,對f1=3.8 kHz 的正弦信號具有不低于50 dB 的抑制,混合采樣信號通過濾波器的輸出為y[n]。
采用fir1 和fir2 進行濾波器設計,采用時域卷積和差分方程進行濾波器實現(xiàn)。從中選擇最優(yōu)的濾波器設計和實現(xiàn)方法,并分析選擇的原因。繪制原始采樣信號與濾波信號的時域波形及波形差;繪制原始采樣信號、混合采樣信號和濾波信號的頻譜圖,分析在濾波信號中,對干擾信號的抑制是否不低于50 dB;分別調(diào)整兩個正弦信號的頻率,重復上述過程,并分析濾波器長度的變化規(guī)律。
根據(jù)實驗流程進行MATLAB 仿真,對三種情況下的信號進行時域增降采樣、濾波和頻譜分析。
單頻正弦信號的時域增采樣和頻譜分析,結(jié)果如圖1 所示。
從圖1 可以看出,2 倍采樣信號與2 倍內(nèi)插信號在時域和頻域上基本一致,表明在滿足采樣定理的條件下,信號的增采樣可以得到比較理想的結(jié)果。
圖1 單頻正弦信號的時域增采樣和頻譜分析結(jié)果
雙頻正弦信號的時域降采樣、增采樣和頻譜分析,結(jié)果如圖2 所示。
從圖2 可以看出,原始采樣信號與內(nèi)插信號在時域和頻域上差異很大,其中對滿足采樣定理的信號分量,信號的增采樣效果比較理想,但是對不滿足采樣定理的信號分量,無法進行有效的信號增采樣。
圖2 雙頻正弦信號的時域降采樣、增采樣和頻譜分析結(jié)果
混合信號的時域濾波和頻譜分析,結(jié)果如圖3 所示。
從圖3 可以看出,通過對比混合采樣信號和濾波信號的頻譜,可以看出濾波器對正弦干擾信號的抑制可以達到50 dB,滿足濾波器的實驗設計要求。不過由于濾波器的群延遲,導致濾波信號與原始采樣信號在時域上無法完全一致。通過該實驗可以讓學生加深對濾波器設計和濾波效果的理解。
圖3 混合信號的時域濾波和頻譜分析結(jié)果
本實驗的過程是一個比較完整的仿真設計實驗,需要經(jīng)歷學習研究、方案論證、實驗調(diào)試和設計總結(jié)等過程。鼓勵學生針對實驗需要解決的問題,嘗試不同的解決思路,結(jié)合實驗所得曲線、圖表分析不同思路的理論原理和優(yōu)缺點,并能結(jié)合思考題舉一反三、深入理解和透徹掌握實驗所涉及數(shù)字信號處理的知識點,實現(xiàn)知識的內(nèi)化。實驗考核部分分為以下幾個部分。
(1)實驗結(jié)果檢查:檢查學生的實驗操作規(guī)范,實驗結(jié)果準確合理。檢查過程中,讓學生現(xiàn)場修改實驗參數(shù),然后運行信號采樣和濾波程序,考察學生是否能夠進行合理的實驗結(jié)果展示,是否能夠準確闡述實驗結(jié)果產(chǎn)生的原因。
(2)現(xiàn)場提問:對照學生的實驗結(jié)果,對實驗現(xiàn)象、實驗原理等環(huán)節(jié)進行提問,學生須現(xiàn)場驗證或回答,要求能從實驗原理出發(fā)論證實驗現(xiàn)象,或能從實驗現(xiàn)象出發(fā)探尋其中的實驗原理。尤其是信號的重采樣、濾波器設計及濾波器實現(xiàn)部分,學生需要展示不同MATLAB實現(xiàn)方法的差異,從中選擇性能最佳的方法,并闡釋不同方法的內(nèi)在機理和選擇性能最佳方法的原因。
(3)實驗數(shù)據(jù):檢查學生在實驗過程中整理的數(shù)據(jù)是否完整、全面,繪制的實驗圖表是否清晰、直觀。
(4)實驗報告:檢查學生的實驗報告是否具有規(guī)范、完整性,對實驗原理的理解是否透徹,是否能根據(jù)實驗現(xiàn)象獨立思考做出總結(jié),是否能正確回答實驗思考題。
為了讓學生深入掌握數(shù)字信號處理的信號采樣、濾波和頻譜分析的相關(guān)知識點,文章設計了信號增降采樣和濾波實驗。本實驗為MATLAB 仿真實驗。通過對三個不同正弦信號的采樣和濾波,實現(xiàn)采樣率的轉(zhuǎn)換和信號濾波。讓學生既能夠真正理解數(shù)字信號處理在實際工程中的應用,又能夠鞏固對增采樣、降采樣、濾波器設計、濾波器實現(xiàn)和快速傅里葉變換的理解。本實驗將理論與實際問題的解決相結(jié)合,將抽象的理論形象化、具體化,促進學生對抽象理論的理解;通過不同解決方法的實驗、分析與比較,進一步激發(fā)學生的探索與學習熱情。通過整個實驗過程,培養(yǎng)了學生的自主學習、獨立思考與綜合分析能力。