武 麗,姜 斌,張海瑞
鄭州大學(xué)西亞斯國(guó)際學(xué)院,河南鄭州 451150
隨著近代計(jì)算機(jī)的出現(xiàn)以及超大規(guī)模集成電路的高速發(fā)展,數(shù)字信號(hào)處理在電子專(zhuān)業(yè)的各個(gè)相關(guān)領(lǐng)域,都具有非常廣泛的應(yīng)用[1],是電子類(lèi)專(zhuān)業(yè)學(xué)生的一門(mén)重要的專(zhuān)業(yè)必修課。然而由于數(shù)字信號(hào)處理的內(nèi)容抽象、公式較多,學(xué)生對(duì)相關(guān)的公式推導(dǎo)、基本理論及分析方法很難理解與掌握,教學(xué)效果并不樂(lè)觀。在實(shí)際教學(xué)中,利用Matlab軟件設(shè)計(jì)對(duì)數(shù)字信號(hào)中的重點(diǎn)難點(diǎn)進(jìn)行仿真分析,不僅彌補(bǔ)了實(shí)驗(yàn)室硬件設(shè)施的不足,而且鞏固了學(xué)生對(duì)所學(xué)的電路分析、信號(hào)與系統(tǒng)等基本理論課程的理解和深化,提高了學(xué)生對(duì)數(shù)字信號(hào)處理的學(xué)習(xí)興趣,對(duì)于今后專(zhuān)業(yè)課程的學(xué)習(xí)以及個(gè)人實(shí)際動(dòng)手編程能力的提高,都是十分重要的。
眾所周知, Matlab是Mathworks公司于1982年推出的一種商業(yè)數(shù)學(xué)軟件,它將數(shù)值分析、矩陣運(yùn)算、信號(hào)處理和圖形顯示有機(jī)地融為一體,形成了一個(gè)用戶(hù)界面極其友好的操作環(huán)境[2]。尤其是該軟件所具有的信號(hào)處理工具箱(signal processing toolbox),其中包含許多由信號(hào)處理庫(kù)函數(shù),這些函數(shù)可直接調(diào)用,使編程變得簡(jiǎn)單。這樣我們就可以方便地利用Matlab軟件來(lái)完成數(shù)字信號(hào)處理課程的數(shù)值計(jì)算和算法的建模、圖形的繪制以及數(shù)字信號(hào)系統(tǒng)的設(shè)計(jì)與仿真。
Matlab軟件在信號(hào)處理中主要用于數(shù)值計(jì)算及仿真分析,包括函數(shù)運(yùn)算、函數(shù)波形繪制、信號(hào)的時(shí)域分析以及信號(hào)的頻譜分析等內(nèi)容,這樣就可以幫助學(xué)生更深入理解數(shù)字信號(hào)處理中的理論知識(shí)[3]。在數(shù)字信號(hào)處理教學(xué)中,可以在講授多媒體教學(xué)課件的基礎(chǔ)上,使用Matlab作為輔助教學(xué)工具,穿插講解用Matlab制作的示例和仿真,從而改善教學(xué)效果。本文以一個(gè)經(jīng)典示例來(lái)詳細(xì)說(shuō)明Matlab在教學(xué)中的輔助應(yīng)用。
利用離散傅里葉變換(DFT, Discrete Fourier Transform)計(jì)算線性卷積
由于序列的圓周卷積可根據(jù)時(shí)域圓周卷積定理利用DFT來(lái)求解,而DFT又具有快速傅里葉變換(FFT, Fast Fourier Transfor)算法,所以運(yùn)算速度極快。而實(shí)際分析系統(tǒng)零狀態(tài)響應(yīng)時(shí),需要求線性卷積,由此引出有限長(zhǎng)序列的圓周卷積與線性卷積等價(jià)條件的分析,當(dāng)二者等價(jià),便實(shí)現(xiàn)利用DFT計(jì)算線性卷積。
若x(n)和h(n)為有限長(zhǎng)序列,序列的長(zhǎng)度分別為M 和N,由線性卷積的知識(shí)可知x(n)和h(n)線性卷積的長(zhǎng)度為M+N-1,若其圓周卷積的點(diǎn)數(shù)L≥M+N-1時(shí),x(n)和h(n)的圓周卷積可以代替其線性卷積,反之,若L<M+N-1,一部分非零序列值重疊,會(huì)出現(xiàn)混淆現(xiàn)象[1]。由于Matlab 中沒(méi)有圓周卷積運(yùn)算的庫(kù)函數(shù),課前需編寫(xiě)自定義函數(shù)cconv,該函數(shù)可實(shí)現(xiàn)有限長(zhǎng)序列x(n)和h(n)的圓周卷積,L為循環(huán)卷積的點(diǎn)數(shù)。課上現(xiàn)場(chǎng)演示仿真實(shí)驗(yàn)時(shí),只需每次改變對(duì)L的賦值,就可以得到各種情況下圓周卷積的結(jié)果,直觀地展現(xiàn)其與線性卷積等價(jià)的情況。
自定義函數(shù)cconv的程序代碼如下:
現(xiàn)設(shè)x(n)=[1234], h(n)=[11111],序列長(zhǎng)度分別為4、5,由Matlab庫(kù)函數(shù)conv可求得其線性卷積的序列長(zhǎng)度為8,當(dāng)圓周卷積的點(diǎn)數(shù)L=6時(shí),其小于線性卷積的長(zhǎng)度8,故發(fā)生混疊現(xiàn)象,而當(dāng)L=8及以上時(shí),此時(shí)滿(mǎn)足線性卷積和圓周卷積的等價(jià)條件,根據(jù)仿真波形可見(jiàn),圓周卷積的結(jié)果與線性卷積的結(jié)果一致。
通過(guò)對(duì)課堂現(xiàn)場(chǎng)仿真結(jié)果的觀察,學(xué)生可以直觀地看到圓周卷積點(diǎn)數(shù)L的選取對(duì)有限長(zhǎng)序列圓周卷積與線性卷積等價(jià)關(guān)系的影響,從而加深對(duì)該知識(shí)點(diǎn)的理解與記憶。
其次,對(duì)一些難度適宜的課后習(xí)題要求學(xué)生不僅進(jìn)行書(shū)面作答,同時(shí)要求學(xué)生利用Matlab軟件編寫(xiě)小型程序得到仿真結(jié)果。通過(guò)這樣的訓(xùn)練,學(xué)生在驗(yàn)證作業(yè)正確性的同時(shí),也加強(qiáng)了編程能力,從而強(qiáng)化了學(xué)生的綜合能力及創(chuàng)新能力。
通過(guò)上述示例可以看出, 根據(jù)數(shù)字信號(hào)處理這門(mén)課程理論性較強(qiáng)且不易學(xué)生掌握的特點(diǎn),在理論教學(xué)以及實(shí)踐環(huán)節(jié)中,充分利用Matlab語(yǔ)言的簡(jiǎn)潔且功能強(qiáng)大的優(yōu)勢(shì),將其作為主要的仿真手段引入教學(xué)。實(shí)踐證明,由此收到了良好的教學(xué)效果,學(xué)生學(xué)習(xí)知識(shí)、應(yīng)用知識(shí)的能力得以提高。
[1]丁玉美,高西全.數(shù)字信號(hào)處理[M].西安:西安電子科技大學(xué)出版社,2006.
[2]鞏萍,趙杰.Matlab在數(shù)字信號(hào)處理中的應(yīng)用[J].長(zhǎng)沙大學(xué)學(xué)報(bào),2009(9):78-79.
[3]王世一.數(shù)字信號(hào)處理[M].北京:北京理工大學(xué)出版社,2006.