方焯 陳西曲 劉衛華 陳良艷



基金項目:
湖北省高等學校省級教學研究項目:以能力提升為核心的電子信息科學與技術專業戰略性新興產業人才培養模式的探索與實踐(2014322);電子信息科學與技術戰略性新興產業專業人才培養方案與教學方法改革的研究(2013317)。
摘 要
本文將 MATLAB 軟件引入到數字信號處理的理論教學中,介紹了離散時間信號的顯示與運算和離散系統的分析。通過運用 MATLAB 軟件自帶的函數可以很方便地畫出離散時間信號的圖形、離散信號的頻譜以及離散系統的零極點圖和頻率響應曲線。
關鍵詞
數字信號處理;MATLAB;零極點
中圖分類號: TN911.72-4;G712 文獻標識碼: A
DOI:10.19694/j.cnki.issn2095-2457.2020.03.011
自從20世紀70年代采用第一塊數字信號處理芯片以來,數字信號處理技術不斷地發展。隨著DSP(數字信號處理)處理器速度和精密性的飛速發展以及計算能力相應的增強,數字信號處理越來越多地進入人們生活的各個領域。掌握數字信號處理的基本概念和方法,是電子信息、電信科學等專業所必備的。通過數字信號處理課程的學習,可以深入理解離散時間信號及其處理,并且為DSP技術、通信理論與技術、無線電技術、微機應用、電路系統等專業課打下良好的基礎。為了更好地掌握數字信號處理的經典理論及其應用,以及數字信號處理基于計算機的方法,我們在教學方法上,將課堂教學、上機實驗與MATLAB有機地結合起來,使學生能夠充分掌握數字信號處理的基本技術,為進一步的深入學習奠定良好的基礎[1]。
1 離散信號的顯示與運算
數字信號處理研究的對象是離散時間信號,而離散時間信號可以通過MATLAB工具中函數進行計算以及畫圖功能顯示[2]。如計算一個一階全通系統的單位采樣序列和矩形序列的響應。其原理是線性時不變系統的響應用filter函數或conv函數計算。其MATLAB程序流程如下:
H(z)=(1)
(1)生成單位采樣序列x1和長度為7的矩形序列x2。
(2)根據全通系統的函數表達式可以得出b=[-0.5 1]和a=[1 -0.5]。
(3)用filter函數得到單位采樣響應h=filter(b,a,x1)和矩形響應y2=filter(b,a,x2)。b和a分別為系統函數分子和分母的系數。
(4)也可以用conv函數計算x2與h的卷積y=conv(x2, h)。
(5)用stem函數畫出x1,x2,h,y2,y。
由圖1可以看出,單位采樣響應和矩形序列的卷積與矩形響應是相等的。同時也說明了我們既可以用filter函數又可以使用conv函數計算線性時不變系統的輸出。
圖1 輸入序列、相應的響應及矩形序列與單位采樣響應的卷積
2 畫零極點圖和頻率響應曲線
運用MATLAB工具能夠很方便的畫出系統的零極點圖和頻率響應曲線。例如一個系統函數H(z)有一個零點z=2,兩個極點z=0.5exp(±j4π/3)。若該系統的直流增益為1,我們可以確定該系統的零極點圖和頻率響應曲線。其原理是已知系統的零、極點可以用poly函數確定系統函數分子和分母的系統,常系數可以由直流增益得到。依題意,直流增益為1,我們可以得到系統零極點的圖用zplane函數得到,數字系統的頻率響應用freqz得到。其MATLAB程序流程如下:
H(ejw)|w=0=1(2)
(1)根據系統零點和極點可以確定系統函數分子和分母的系數。
(3)
常系數通過直流增益來計算,常系數為sum(a)/sum(b);
(2)用zplane(b,a)畫出系統函數的零極點圖;|
(3)用[H,w]=freqz(b,a,N)計算頻率響應,N為頻率的采樣點數。
圖2 非最小相位系統的零極點圖,單位采樣響應,幅頻響應和相頻響應
圖3 最小相位系統的零極點圖,單位采樣響應,幅頻響應和相頻響應
我們得到非最小相位系統的零極點圖,單位采樣響應,幅頻響應和相頻響應,如圖2所示。進一步將零點移至以單位圓為對稱軸的鏡像位置得到一個最小相位系統,重復前面的步驟得到圖3。圖2和圖3分別為零點在z=2和鏡像位置z=0.5,兩個極點都在z=0.5exp(±j4π/3)的系統的零極點圖,單位采樣響應,幅頻響應和相頻響應。比較可見,將零點由單位圓外移到單位圓內的鏡像位置,由非最小相位系統變成了最小相位系統,并沒有改變系統的幅頻響應,而單位采樣響應和相頻響應都有變化。圖2和圖3的h(0)都等于0,圖2的h(1)=-1.75,圖3的h(1)=3.5,可見最小相位系統的單位采樣響應序列的能量集中在n=0附近,從相頻響應曲線可以看出,最小相位系統的相頻響應曲線的斜率較小,因此運用MATLAB可以很直觀的驗證最小相位系統具有較小的群延遲。
3 頻譜分析
圖4 三種抽樣方法得到的信號頻譜,(1)fs=3000Hz,N=60;(2)fs=1000Hz,N=60;(3)fs=3000Hz,N=20
運用MATLAB工具可以對離散時間信號做DFT頻譜分析,例如一個模擬信號用可以借助MATLAB軟件做頻譜分析。對模擬信號的表達式化簡得到公式(5),利用函數fft可以直接返回離散時間信號的頻域值。先由模擬信號采樣得到不同采樣頻率下的離散信號x,再用X=fft(x)函數可以直接得出信號的頻域值。我們得到圖4,可以看出模擬信號的頻譜在頻率為500Hz,600Hz,700Hz有峰值,其他頻率信號的幅度為零。頻譜分析如圖4所示,采樣頻率fs和采樣點數N分別為(1)fs=3000Hz,N=60;(2)fs=1000Hz,N=60;(3)fs=3000Hz,N=20。可以看出圖4。(1)能清晰地分辨出這三個峰值,而圖4。(2)的頻譜在k=30出現了混跌現象,圖4。(3)的抽樣點數太少了,峰值很模糊。根據奶奎斯特抽樣定理,抽樣頻率應大于信號最高頻率的兩倍,因此抽樣頻率必須大于1400Hz,抽樣點數N≥fs/F0,F0為頻率分辨率,(3)的抽樣頻率為3k Hz,F0=100Hz,因此抽樣點數至少為30點,因此只有(1)的抽樣條件能使抽樣信號能分辨所有的頻率分量。
xa(t)=[1+cos(2π×100t)]cos(2π×600t)(4)
xa(t)=cos(2π×600t)+cos(2π×500t)+cos(2π×700t)(5)
4 結論
本文介紹了MATLAB在數字信號處理理論教學中的應用。可以看出MATLAB的引入為數字信號的處理提供了便捷的數值計算方法,讓數值信號處理的理論教學從大量的數據推導和計算中解放出來,使得數字信號處理簡單化、實用化,充分體現了MATLAB軟件在數字信號處理的理論教學中的優越性。
參考文獻
[1]程佩青.數字信號處理教程[M].北京:清華大學出版社(第四版),2015.
[2]王永玉,孫衢.數字信號處理與應用[M].北京:北京郵電大學出版社,2009.