關(guān)成斌 邢福成 方偉 叢瑜
摘要:針對數(shù)字信號處理課程內(nèi)容抽象、理論性強、學(xué)生接受困難的問題,對采用Matlab和LabVIEW語言開發(fā)課堂演示程序的方法進行了研究。利用實例對編程方法進行了說明,對兩種語言的特點進行了對比分析。實際應(yīng)用證明,采用這種方法可明顯增強學(xué)生的學(xué)習(xí)興趣、明確學(xué)習(xí)目的、提高感性認識、強化理論學(xué)習(xí)效果,對培養(yǎng)學(xué)員的實踐意識和實踐能力具有重要意義。
關(guān)鍵詞:數(shù)字信號處理;Matlab;LabVIEW
中圖分類號:G43文獻標(biāo)識碼:A文章編號:1009-3044(2012)16-3902-04
Application of Matlab and LabVIEW in Digital Signal Processing Course
GUAN Cheng-bin, XING Fu-cheng, FANG Wei, CONG Yu
(Department of Electronic and Information Engineering, NAAU, Yantai 264001, China)
Abstract: To resolve the problem that digital signal processing course is nonobjective, full of theory, and it is difficult for students to ac cept, the methods of programming the demos of digital signal processing with Matlab and LabVIEW are studied. The methods are intro duced with examples. The characters of the two languages are compared and analyzed. The practices show that by teaching with the dem os, the goals are made sure, the perceptual knowledge is improved, the theory study effect is consolidated. It is significative to train the stu dentspractice consciousness and ability.
Key words: digital signal processing; Matlab; LabVIEW
數(shù)字信號處理利用數(shù)學(xué)的方法和數(shù)學(xué)模型對信號進行處理,在計算機技術(shù)以及數(shù)字信號處理器件高速發(fā)展的今天,數(shù)字信號處理技術(shù)的應(yīng)用越來越廣泛,如音頻處理、圖像處理、雷達聲納信號處理等都大量使用了數(shù)字信號處理技術(shù)。因此,越來越多的高等院校的相關(guān)專業(yè)開設(shè)了數(shù)字信號處理這門專業(yè)基礎(chǔ)課。[1]
數(shù)字信號處理本身的特點決定了其是理論性很強的課程,內(nèi)容抽象、公式繁多[2],如果在授課過程中為講理論而講理論,往往使學(xué)生感到枯燥乏味,抓不住重點,教學(xué)效果很不理想。根據(jù)作者多年的教學(xué)經(jīng)驗,在教學(xué)過程中引入實例教學(xué),安排了大量的課堂演示,往往會取得事半功倍的效果。首先可使學(xué)生明確理論學(xué)習(xí)的意義、作用;其次,增強了學(xué)生的感性認識,對理解概念,促進理論學(xué)習(xí)具有重要作用。進行數(shù)字信號處理的實例演示需要編寫數(shù)字信號處理程序,以往常用的編程軟件,如C語言、VB語言等,沒有現(xiàn)成的數(shù)字信號處理函數(shù)及工具,開發(fā)周期長,且代碼復(fù)雜,不利于學(xué)員通過代碼理解原理。而Matlab和LabVIEW這兩種更高級的編程語言具有上手快、編程簡單、具有專門的數(shù)字信號處理工具箱等優(yōu)勢,故我們采用了這兩種語言進行演示程序的開發(fā)。
1 Matlab和LabVIEW語言簡介
1.1 Matlab語言簡介
Matlab語言以矩陣運算為基礎(chǔ),具有可靠的數(shù)值計算功能、強大的繪圖功能,最重要的是具有豐富的數(shù)字信號處理函數(shù)工具箱。和傳統(tǒng)的C語言、VB語言等編程語言相比,其語言體系簡單易學(xué)。將Matlab語言應(yīng)用于數(shù)字信號處理演示教學(xué)中,具有以下幾個突出優(yōu)點:
1)Matlab語言具有很強的數(shù)值和符號計算功能,支持向量和矩陣運算,它的編程語言幾乎就如同我們平時書寫公式,非常易于學(xué)習(xí)和使用,程序代碼很容易被學(xué)生接受和理解,因此學(xué)生可以通過代碼和現(xiàn)象的對比分析掌握所學(xué)處理方法[3,4]。
2)Matlab語言可方便快捷的輸出二維或三維圖形、圖像、聲音、動畫等結(jié)果,給學(xué)生以感性的認識[3,4]。如對實際的聲音信號進行數(shù)字信號處理的方法進行處理,并通過聲卡對處理前后的聲音分別播放,使學(xué)員通過聽覺辨別處理前后信號的不同。
3)Matlab具有豐富的數(shù)字信號處理函數(shù)庫[5],涵蓋了經(jīng)典信號處理理論的大部分內(nèi)容。數(shù)字信號處理課程中涉及的算法都有對應(yīng)的函數(shù),如快速傅里葉變換函數(shù)fft、基于窗函數(shù)的FIR濾波器設(shè)計函數(shù)fir1、多采樣率信號處理的信號抽取函數(shù)downsample等,有了這些庫函數(shù)就可以通過簡單的代碼實現(xiàn)復(fù)雜的運算,大大方便了演示程序的設(shè)計。
1.2 LabVIEW語言簡介
Labview是實驗室虛擬儀器集成環(huán)境 (Laboratory Virtual Instrument Engineering Workbench)的簡稱,其與傳統(tǒng)高級編程語言最大的差別在于編程方式,一般的高級語言采用文本編程,而LabVIEW采用圖形化編程方式,因此又被稱為G語言(Graphic Language)。使用這種語言編程時,基本上不需要編寫程序代碼,而是“繪制”程序流程圖。將LabVIEW語言應(yīng)用于數(shù)字信號處理演示教學(xué)中,具有以下幾個突出優(yōu)點:
1)LabVIEW盡可能利用工程技術(shù)人員所熟悉的術(shù)語、圖標(biāo)和概念,因而它是一種面向最終用戶的開發(fā)工具,可以增強編程人員構(gòu)建自己的科學(xué)和工程系統(tǒng)的能力,為編程提供了便捷途徑[6]。
2)LabVIEW語言可以方便快捷的建立人性化的操作界面,具備完備的聲卡設(shè)備驅(qū)動功能,便于對音頻信號等處理結(jié)果的實際感受[7]。
3)LabVIEW最初是為虛擬儀器開發(fā)而研制的語言,但隨著其廣泛應(yīng)用,目前已經(jīng)發(fā)展為包含眾多附加軟件包,可運行于多種平臺的標(biāo)準開發(fā)環(huán)境[8]。其中,提供了功能強大的數(shù)字信號處理函數(shù),包括信號產(chǎn)生、時域分析、頻域分析、濾波器、窗函數(shù)等函數(shù)庫。因此,LabVIEW非常適合于數(shù)字信號處理課程的課堂演示程序的開發(fā)。
2基于Matlab和LabVIEW的數(shù)字信號處理演示程序?qū)嵗?/b>
該文以對一個真實音頻信號進行濾波分析為例,分別用LabVIEW和Matlab開發(fā)了演示程序。要求演示程序能顯示一個真實音頻信號的波形、頻譜,能對其進行濾波(采用Butterworth型的高通、低通、帶通、帶阻濾波器),顯示濾波后的波形和頻譜,并能通過音箱將濾波前后的音頻信號播放出來。
2.1基于Matlab的音頻信號濾波演示程序
基于Matlab的音頻信號濾波演示程序代碼如圖1所示,其中“%”后的文字為注釋。通過讀代碼可見,本程序?qū)崿F(xiàn)了上文所要求的功能。注意:在運行前需將“ringin.wav”文件至于本程序文件同一路徑下。
運行該程序,可得結(jié)果如圖2所示,從上到下四幅圖分別為原始信號波形、原始信號幅度譜、濾波后信號波形、濾波后信號幅度譜;電腦接上音箱或者耳機還可以聽到兩段聲音,分別對應(yīng)于原始音頻信號和濾波后的音頻信號。
從運行結(jié)果可見,對原始信號波形進行階數(shù)為5,歸一化截止頻率為0.3的低通濾波后,頻譜有明顯的變化,在3000、4000處的高頻譜線被濾除了,波形也具有明顯變化,通過播放的聲音也可以聽出明顯的不同,通過修改源代碼,可以觀察不同參數(shù)條件下的運行結(jié)果,從而可增強學(xué)員的感性認識。
2.2基于LabVIEW的音頻信號濾波演示程序
基于LabVIEW的音頻信號濾波演示程序由兩部分組成,分別是前面板和程序框圖,其中前面板是圖形用戶界面,如圖3所示,其中包括顯示控件和輸入控件,作為人機交互的接口,在本示例中顯示控件包括原始波形、原始頻譜、濾波后的波形、濾波后的頻譜四個波形顯示控件;輸入控件包括音頻路徑選擇控件、截取長度輸入控件(-1表示截取長度取音頻信號的實際長度)、濾波器采樣頻率輸入控件、高截止頻率(低通濾波器和高通濾波器此參數(shù)無意義,帶通和帶阻濾波器次參數(shù)有意義)、低截止頻率、濾波器階數(shù)、停止按鈕等,這些控件均用于人工輸入?yún)?shù)及指令。
程序框圖是定義VI功能的圖形化源代碼。如圖4所示,包括從前面板上的輸入控件獲取用戶輸入信息的圖標(biāo),如獲取“截取點數(shù)”、“音頻路徑”、“采樣頻率”、“高截止頻率”、“低截止頻率”、“濾波器類型”、“濾波器階數(shù)”等信息的圖標(biāo);前面板顯示控件圖標(biāo),如“原始波形”、“原始頻 譜”、“濾波后波形”、“濾波后頻譜”的顯示控件圖標(biāo);“播放波形”函數(shù)用于將需要播放的波形驅(qū)動聲卡進行聲音播放;“讀取聲音文件”函數(shù)用于將指定路徑的文件按照設(shè)置的截取點數(shù)讀取出來,輸出為一個二維數(shù)組(對應(yīng)于兩個聲道);為便于分析,我們用“索引數(shù)組”函數(shù)取二維波形中的一維進行分 析;“FFT變換”函數(shù)用于將需要分析的數(shù)組進行FFT變換,得到被分析波形的頻譜,這里我們只取出幅度譜;用“取絕對值”函數(shù)對幅度譜進行處理得到符合我們習(xí)慣的幅度譜;“濾波運算”函數(shù)用于按照指定的各種參數(shù)對原始信號進行濾波,濾波后的結(jié)果為數(shù)組;若要將濾波結(jié)果進行播放,必須將其轉(zhuǎn)換為波形,我們利用“創(chuàng)建波形”函數(shù)在原始波形的基礎(chǔ)上創(chuàng)建濾波后的波形;“時間等待”函數(shù)用于在本順序結(jié)構(gòu)的幀中等待一段時間,用于播放完波形;Lab VIEW程序是基于數(shù)據(jù)流的編程機理,“順序結(jié)構(gòu)”用于指定程序執(zhí)行時間上的先后關(guān)系;“while循環(huán)結(jié)構(gòu)”用于循環(huán)執(zhí)行程序;除此之外,還包括常量以及連線等。
圖3基于LabVIEW的音頻信號濾波演示程序前面板
完成了上述前面板和程序框圖的設(shè)計即完成了基于LabVIEW的音頻信號濾波演示程序的設(shè)計??梢姡境绦?qū)崿F(xiàn)了演示程序的要求:能顯示一個真實音頻信號的波形、頻譜,能對其進行濾波,顯示濾波后的波形和頻譜,并能通過音箱將濾波前后的音頻信號播放出來。從圖2和圖3對比可見參數(shù)相同的Matlab和LabVIEW程序運行結(jié)果完全相同。
本演示程序所有的操作和顯示均在前面板上,設(shè)置好所有參數(shù),點擊工具欄的執(zhí)行按鈕即可運行程序,由于本程序設(shè)置了循環(huán)執(zhí)行,所以在執(zhí)行過程中可以隨時進行參數(shù)的更改,從而實時的觀察新參數(shù)下的運行結(jié)果。
2.3兩種語言開發(fā)的音頻信號濾波演示程序?qū)Ρ?/p>
通過上述兩種語言開發(fā)的音頻信號濾波演示程序可見兩種語言均可實現(xiàn)所要求的程序功能,且現(xiàn)象相同,但具體分析各有特點:
1)從編程方法上看,兩種軟件各不相同,Matlab仍然采用文本編程的方式,而LabVIEW采用的是圖形編程的方式;
2)從編程的難易程度上看,Matlab實現(xiàn)這種功能所需的代碼很少,會更容易實現(xiàn)一些;
3)從操作使用上看,基于LabVIEW演示程序的所有操作和顯示均在前面板上進行,操作更人性化,操作使用更簡便;
4)從現(xiàn)象對比上看,基于LabVIEW演示程序可以在前面板上不斷改變參數(shù),實時觀察不同參數(shù)條件下現(xiàn)象的變化,也更容易對比不同參數(shù)條件下處理結(jié)果的不同;
5)從學(xué)生對原理理解上看,通過Matlab簡明的、符合平時應(yīng)用習(xí)慣的代碼,可以很容易理解相關(guān)原理,而通過LabVIEW程序框圖,根據(jù)信息流的流向有利于加強學(xué)生對信號處理的感性認識;
6)在編程和演示過程中,要注意Matlab和LabVIEW函數(shù)中有些參數(shù)意義上的不同。如濾波器函數(shù)的歸一化截止頻率的概念,Matlab中是對單邊幅頻特性進行歸一化,而LabVIEW中是對雙邊幅頻特性進行歸一化,因此LabVIEW中的截止頻率除以2對應(yīng)于Matlab中的截止頻率。如果沒有考慮這個不同,則得到的結(jié)果將會不同,該文編程中為對從LabVIEW前面板上的截止頻率控件中獲取的值除以2后送入濾波器函數(shù)中,從而實現(xiàn)了和Matlab程序中參數(shù)的統(tǒng)一。
3結(jié)束語
該文對采用Matlab和LabVIEW編寫用于數(shù)字信號處理課程課堂演示教學(xué)程序的方法進行了研究,并以音頻信號濾波演示程序為例進行了分析。實踐證明采用高級編程語言可以簡便快捷的開發(fā)出數(shù)字信號處理課程課堂演示教學(xué)程序;將其應(yīng)用于教學(xué)中,可明顯增強學(xué)生的學(xué)習(xí)興趣、明確學(xué)習(xí)目的、提高感性認識、強化理論學(xué)習(xí)的效果,對培養(yǎng)學(xué)員的實踐意識和實踐能力具有重要意義。將采用兩種語言編寫的演示程序?qū)Ρ确治隹梢?,兩者各有?yōu)勢,根據(jù)演示內(nèi)容合理選用不同語言,或者將兩種語言從不同角度配合應(yīng)用,可達到更好的教學(xué)效果。
參考文獻:
[1]程佩青.數(shù)字信號處理教程[M].北京:清華大學(xué)出版社,2008.
[2] Shenoi B A.Introduction to digital signal processing and filter designp[M].Hoboken USA: John Wiley & Sons,Inc,2006.
[3]樓順天,姚若玉.Matlab7.X程序設(shè)計語言[M].2版.西安:西安電子科技大學(xué),2006.
[4] Hanselman D,Littlefield B. Marstering Matlab 7[M].Hongkong, Pearson Education Asia Limited,2005.
[5]王嘉梅.基于Matlab的數(shù)字信號處理與實踐開發(fā)[M].西安:西安電子科技大學(xué)出版社,2007.
[6]豈興明,田京京,夏寧.LabVIEW入門與實踐開發(fā)100例[M].北京:電子工業(yè)出版社,2011.
[7]侯國屏,王珅,葉齊鑫.LabVIEW7.1編程與虛擬儀器設(shè)計[M].北京:清華大學(xué)出版社,2004.
[8]劉剛,王立香,張連俊.LabVIEW8.20中文版編程及應(yīng)用[M].北京:電子工業(yè)出版社,2008.