Matlab的數字訊號處理課程實驗設計的論文

Matlab的數字訊號處理課程實驗設計的論文

  摘要:本文設計了一個基於Matlab的“數字訊號處理”課程綜合性實驗。該實驗把“數字訊號處理”課程中的許多離散的知識點串接了起來,包括取樣、量化、濾波器設計、濾波器實現、DFT/FFT和濾波器的有限字長效應等。教學實踐表明該實驗有利於鞏固學生課堂上學到的理論知識,提高學生的理論聯絡實際的能力和動手解決問題的能力。

  關鍵詞:數字訊號處理;綜合性實驗;Matlab

  0引言

  “數字訊號處理”課程的主要內容包括z變換、離散傅立葉變換(DFT)、快速傅立葉變換(FFT)、數字濾波器設計和實現以及數字訊號處理中的有限字長效應等等[1]。在學習理論知識的同時或之後,引入實驗將有助於學生更好地理解和掌握課程內容[2-3]。筆者在教學過程中,設計了Matlab綜合性實驗。該實驗在不失趣味性的同時,能把該課程中許多分散的知識點串接起來。教學實踐表明,該實驗可以幫助學生更深入地理解本門課程,取得了較好的教學效果。

  1綜合實驗內容設計

  筆者所設計的Matlab實驗如下:對下式所示的輸入訊號進行濾波。x=sin(100πt)+sin(480πt)(1)具體步驟為(1)將輸入的模擬訊號x進行取樣和量化,得到12位精度的數字訊號;(2)設計一個低通無限衝激響應(IIR)濾波器,將輸入訊號中的240Hz的干擾濾除,要求濾波器的輸出訊號中240Hz處的噪聲功率比50Hz處的訊號功率低60dB。(3)設計一個高通有限衝激響應(FIR)濾波器,將輸入訊號中的50Hz的干擾濾除,要求濾波器的輸出訊號中50Hz處的噪聲功率比240Hz處的訊號功率低60dB。(4)對於上述兩個濾波器,要求:給出理想濾波器的傳輸函式及頻率響應;給出係數量化後所得的新的濾波器的傳輸函式及頻率響應;確定濾波器實現所採用的結構,並給出該結構中所用加法器和乘法器的位數;將輸入的數字訊號透過前一步實現的濾波器,畫出輸出訊號的頻譜,確保濾波器效能滿足設計要求。順利完成上述Matlab實驗,需要解決以下問題:(1)取樣頻率和FFT點數的.選取:根據取樣定理,取樣頻率只要不低於訊號中所包含的最高頻率的兩倍,就可以從取樣後的離散時間訊號中恢復出原始的模擬訊號。根據式(1),取樣頻率只要不小於480Hz即可。但是當需要使用FFT對訊號進行頻譜分析時,在確定取樣頻率時,除了要滿足取樣定理外,還需要考慮其他條件。例如:在做FFT時,訊號頻率應為頻率解析度的整數倍,這樣才能準確地從頻譜中看到該頻率訊號的功率,避免譜洩漏,即下式中的k應為整數:k=ffs=N(2)其中f,fs和N分別為訊號頻率、取樣頻率和FFT的點數。fs/N為頻率解析度,N一般為2的冪次方。在k不為整數時,為了減小譜洩漏的影響,可以在做FFT之前對取樣所得的訊號進行加窗處理[1]。(2)模數轉換器的實現:實驗中要求對輸入訊號進行量化,得到12位精度的數字訊號。在將輸入訊號進行量化時,涉及到如何確定模數轉換器的滿量程範圍、結構、量化方式(舍入還是截斷)以及如何進行有符號數的量化等。(3)IIR濾波器型別的選擇和設計:雙線性變換是設計數字IIR濾波器的常用方法。它首先要將所要設計的數字濾波器的歸一化邊界角頻率進行預畸變,然後再設計出滿足效能要求的模擬濾波器。模擬濾波器有四種類型,分別為巴特沃斯濾波器,切比雪夫I型濾波器、切比雪夫II型濾波器以及橢圓濾波器。只有瞭解了這四種濾波器的特性,才能根據實際需求來選擇合適的濾波器型別。在選擇好濾波器型別後,將濾波器的效能指標輸入相應的Matlab函式,就可以得到濾波器的傳輸函式,完成濾波器的設計。以橢圓濾波器為例,可以依次呼叫函式elli-pord(),函式ellipap()和函式zp2tf()來獲得濾波器的階數、零極點、增益和s域傳輸函式;也可以直接呼叫函式ellip()來得到濾波器的s域傳輸函式。最後再透過呼叫函式bilinear()得到相應數字濾波器的傳輸函式。(4)FIR濾波器的設計:在用窗函式法來設計FIR濾波器時,首先要根據濾波器的效能引數(如過渡頻寬度、阻帶衰減等)選取合適的窗函式以及確定窗函式的長度,之後將得到的窗函式與理想濾波器的單位脈衝響應序列相乘得到FIR濾波器的單位脈衝響應序列。以Kaiser窗為例,在Matlab中,函式kaiserord()用於預估FIR濾波器的階數,函式kaiser()用於產生相應長度的Kaiser窗函式,函式fir1()用於實現採用該Kaiser窗設計的FIR濾波器,輸出為濾波器的單位脈衝響應序列。(5)濾波器的實現:在用硬體實現濾波器時,必須考慮濾波器的有限字長效應,即濾波器係數的量化、濾波器中加法器和乘法器的有限字長效應以及運算結果的有限字長等等。濾波器的實現結構有直接型、級聯型和並聯型等。由於IIR濾波器存在量化噪聲的積累,所以在選擇結構時,需要考慮各種結構對有限字長效應的靈敏度。高階IIR濾波器通常採用級聯型或並聯型結構來實現。Matlab中的函式residuez(B,A)用於計算傳輸函式B(z)/A(z)的留數、極點和直接項,從而得到有理式的部分分式展開;利用傳輸函式的部分分式展開,並透過適當的合併,可以得到濾波器的並聯型結構。函式tf2sos()則可用於將傳輸函式轉換成二階節,得到濾波器的級聯型結構。圖3給出了係數量化前後高通濾波器的頻率響應。為了能夠判斷所設計和實現的濾波器的效能是否達到設計指標,需要對濾波器的輸出序列做N點的FFT。這時需要注意兩點:一要能正確地區分輸出序列中的暫態響應部分和穩態響應部分;二要從穩態響應部分選取連續的N個輸出值做N點的FFT。

  2教學反饋

  根據學生上交的實驗報告,從他們所寫的實驗收穫和實驗心得可以看出這個實驗對他們學好這門功課所起的作用。總結如下:(1)本次實驗是FIR濾波器與IIR濾波器的設計,綜合使用了大量數字濾波器的設計方法,比如雙線性變換法,窗函式法等,加深了對課堂學習的理論知識的理解,如IIR和FIR濾波器的優缺點、濾波器的暫態響應和穩態響應、各種模擬濾波器的效能比較以及各種窗函式之間的差異等。(2)學生對取樣定理和FFT有了更深的認識,明白了取樣頻率、FFT點數等對頻譜分析結果的影響,並透過不斷的摸索與嘗試,總結出了使用FFT時的一些注意事項。(3)對數字訊號處理中的有限字長效應有了更加直觀的體會,認識到在設計濾波器的傳輸函式時,需要考慮量化對濾波器效能的影響,設計指標需要留出一定的裕量。(4)提高了用Matlab實現數字訊號處理功能的能力,包括:熟悉了使用Matlab設計FIR和IIR濾波器的流程;學會使用Matlab中的一些函式,如fft,cheb1ord,cheby,bilinear,fir1等;學會了用Matlab編寫程式來實現指定結構的濾波器;學會了從時域和頻域觀察濾波器的輸出是否正確以及是否達到效能要求等。總而言之,透過這次實驗,使學生真正瞭解瞭如何利用Matlab來進行濾波器的設計,感覺受益匪淺,對他們學好“數字訊號處理”課程很有幫助。

  3結語

  筆者所設計的基於Matlab的綜合性實驗涵蓋了“數字訊號處理”課程中的主要知識點。從學生反饋的意見可以看出,本實驗取得了良好的教學效果,這有利於提高學生學習興趣以及增強他們解決實際問題的能力。

  參考文獻:

  [1]程佩青,數字訊號處理教程[M],北京:清華大學出版社,2007.

  [2]曹建玲,劉煥淋,雷宏江.基於MATLAB的“數字訊號處理”模擬實驗[J].北京:中國電力教育,2012(32):88-89.

  [3]易婷.“數字訊號處理”課程課內配套實驗的設計[J].南京:電氣電子教學學報,2013,35(4):89-90.

最近訪問