關(guān)成斌 王捷 張福寶 宋杰
(海軍航空工程學院 電子信息工程系,山東 煙臺 264001)
“數(shù)字信號處理”課程是各高校電子類專業(yè)學生的一門重要的專業(yè)基礎(chǔ)課,其內(nèi)容抽象、公式繁多、理論性強,常常使學生感覺到枯燥乏味、抽象難學。為了提高學習效果,為后續(xù)專業(yè)課程的學習打下堅實的基礎(chǔ),數(shù)字信號處理課程的實驗環(huán)節(jié)就顯的尤其重要[1~2]。
數(shù)字信號處理的實驗可用有不同的方法來實現(xiàn)。比如有的公司開發(fā)了DSP實驗箱,可以應(yīng)用于數(shù)字信號處理的實驗教學中[3]。但DSP實驗箱一般需要向DSP芯片中寫程序,這種編程比較復(fù)雜,而且程序的可讀性較差,因此雖然現(xiàn)象直觀但是對原理的理解不是那么直接。目前數(shù)字信號處理實驗較多采用Matlab語言來實現(xiàn)。Matlab語言以矩陣運算為基礎(chǔ),具有可靠的數(shù)值計算功能和符號計算功能、強大的繪圖和圖形用戶界面可視化功能[4-6],具有豐富的數(shù)字信號處理函數(shù)[7]等特點,將其用于數(shù)字信號處理實驗,使問題變得簡單、明晰,因此它在數(shù)字信號處理實驗環(huán)節(jié)中發(fā)揮了越來越重要的作用。
對信號進行頻域分析是數(shù)字信號處理中非常重要的內(nèi)容,DFT是分析序列離散譜的重要工具,并且DFT在其它許多領(lǐng)域都有廣泛的應(yīng)用[1~2]。但是直接計算DFT的運算量太大,運算速度太慢。FFT是DFT的快速算法,可提高運算速度,在資源的占用以及處理的實時性上要優(yōu)越得多。本文以DFT和FFT算法的比較為例設(shè)計如下實驗教學方案。
進一步加深對DFT算法原理和基本性質(zhì)的理解;掌握FFT算法原理和編程實現(xiàn)方法;通過對實驗結(jié)果的分析比較,加深對DFT和FFT運算量不同的認識。
DFT表達式為:
FFT正是利用旋轉(zhuǎn)因子的對稱性和周期性等,通過一定的數(shù)學方法降低運算量。目前,最常用FFT算法有基2DIT-FFT和基2DIF-FFT、分裂基FFT、離散哈特萊變換等。本實驗以研究基2DIT-FFT的軟件實現(xiàn)方法為例,其蝶形運算流圖如圖1所示。
圖1 基2DIT-FFT碟形運算流圖
DFT運算的程序框圖如圖2所示。基2DIT-FFT的程序框圖如圖3所示。
圖2 DFT運算程序框圖
圖3 基2DIT-FFT運算程序框圖
原始序列為對式(2)所示信號的一個周期進行4096次等間隔采樣得到的序列。序列如圖4所示,圖5為對該序列進行局部放大的效果。
圖4 原始序列
圖5 原始序列局部放大
其中,randn為正態(tài)分布的隨機數(shù),該隨機數(shù)在任意采樣點上加入。
圖6為進行4096點DFT運算得到的譜序列,圖7為其局部放大效果圖。
圖6 DFT運算得到的譜序列
圖7 DFT運算得到的譜序列局部放大
圖8為進行4096點FFT運算得到的譜序列,圖9為其局部放大效果圖。
DFT運算所用時間為18.766s,F(xiàn)FT運算所用時間為0.031s。采用DFT算法是采用FFT算法所用時間的605.35倍。而理論上DFT與FFT算法的運算量之比為[1]:
將N=4096,代入式(3)中計算,得到理論的運算量之比為682.67。
圖8 FFT運算得到的譜序列
圖9 FFT運算得到的譜序列局部放大
通過上述實驗,可得如下結(jié)論:
(1)采用DFT和FFT得到的信號頻譜完全相同,證實了DFT與FFT機理是相同的;
(2)DFT算法和FFT算法的運算速度相差很大,證實了FFT算法的高效,且點數(shù)越大,F(xiàn)FT的運算速度優(yōu)勢越明顯;
(3)采用DFT算法和FFT算法計算機耗時之比為605.35,而理論計算的運算量之比為682.67,考慮計算機資源占用不均等因素,可證實式(3)所示的運算量公式是正確的。
(1)重視實驗在整個數(shù)字信號處理課程學習中的重要性
實踐教學環(huán)節(jié)可以彌補學生對理論知識的感性認識不足的缺陷,是理論聯(lián)系實際的有效途徑,是培養(yǎng)學生的分析解決問題能力、創(chuàng)新意識、實踐技能和提高綜合素質(zhì)最有效的手段。實驗教學不能僅限于過程演示,重點在于鍛煉動手能力,既要掌握完善的操作程序和實驗手段,更要培養(yǎng)研究方法和鉆研精神。
(2)在課程教學的過程中加入部分演示程序,激發(fā)學員作實驗的積極性
在實驗教學中發(fā)現(xiàn),相當一部分學生對Matlab語言并不熟悉,加上對所學的理論掌握不夠扎實,面對較復(fù)雜的公式,在參數(shù)設(shè)置、實驗結(jié)果分析等方面往往不知所措。一次實驗課下來,經(jīng)常達不到預(yù)期的學習效果。針對這種情況,在課程教學的過程中,應(yīng)及時加入必要的演示程序。這樣既提升了理論課的學習效果,又使學生盡早熟悉Matlab,激發(fā)他們對實驗的興趣,減少做實驗的盲目性,充分發(fā)揮學生的主觀能動性。
(3)編程思路要緊扣原理
每個實驗所要用到程序都可有不同的思路進行編寫。為了使學生深入地理解和消化基本理論,要求在編程時應(yīng)緊扣原理。Matlab中的數(shù)字信號處理工具箱可非常簡單地完成實驗任務(wù),如FFT,可直接實現(xiàn)FFT運算。在初次實驗時,要規(guī)定學員不能直接調(diào)用這些函數(shù)生成實驗結(jié)果,而應(yīng)嚴格按照原理來實現(xiàn)相應(yīng)的功能。教師在審查實驗時也不能只看報告及結(jié)果,而要通過運行學生的程序,來檢驗實驗的完成情況。
(4)注重創(chuàng)新能力的培養(yǎng)
在完成基本任務(wù)的基礎(chǔ)上,應(yīng)鼓勵學生采用其它的思路和方法去實現(xiàn)相同的實驗。比如可以鼓勵學生嘗試采用DIF-FFT、基4FFT算法等開發(fā)FFT運算程序,這樣可以拓展思路,更好地提高實驗設(shè)計與分析的能力,還有利于培養(yǎng)獨立思考、綜合運用知識和解決問題的能力。
Matlab作為一種交互式的面向?qū)ο蟮恼Z言,支持矩陣運算、語法簡單、容易上手,用于數(shù)字信號處理的實驗教學取得了很好的效果。實驗項目的開設(shè)靈活多變,實驗現(xiàn)象準確直觀,實驗參數(shù)的設(shè)置與改變方便便捷。實踐證明,通過相關(guān)的實驗,能幫助學生直觀地理解一些抽象的概念、理論和知識點,極大地提高了教學效果。又能鞏固學生的程序設(shè)計知識,使學生的編程能力得以提高,激發(fā)學生的求知欲,激勵學生進行積極探究和思考,增強學生對專業(yè)知識的應(yīng)用能力,為培養(yǎng)創(chuàng)新思維奠定基礎(chǔ)。
[1]程佩青.數(shù)字信號處理教程(第三版).北京:清華大學出版社,2007.
[2]丁玉美,高西全.數(shù)字信號處理(第二版).西安:西安電子科技大學出版社,2004.
[3]竺錦梁,陳芬,劉鵬.基于DSP實驗箱顯示/控制模塊的應(yīng)用系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2008,31(7):128-130.
[4]陳懷琛,吳大正,高西全.Matlab及在電子信息課程中的應(yīng)用(第三版)[M].北京:電子工業(yè)出版社,2006.
[5]徐紅梅,宋正勛,胡貞.Matlab在電子信息類專業(yè)基礎(chǔ)課中的應(yīng)用[J].長春光學精密機械學院學報,2001,9(1):24-26.
[6]張建珍,陳振斌,何金戈.Matlab在理工專業(yè)課程教學中的應(yīng)用[J].海南大學學報,2010(9):276-278.
[7]伯曉晨等編.Matlab工具箱應(yīng)用指南—信息工程篇[M].北京:電子工業(yè)出版社(第一版),2000.