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