王雪飛,王昌盛,馬月紅
(軍械工程學(xué)院1.光學(xué)與電子工程系2.教育技術(shù)中心,河北石家莊050003)
“數(shù)字信號(hào)處理”課程是電子工程與信息類(lèi)專(zhuān)業(yè)的一門(mén)重要的基礎(chǔ)課程。Matlab作為一門(mén)具有科學(xué)計(jì)算和可視化能力的軟件工具,在“數(shù)字信號(hào)處理”的實(shí)驗(yàn)教學(xué)中發(fā)揮了重要作用[1,2]。教師可根據(jù)課程設(shè)計(jì)在基于PowerPoint的教學(xué)課件與Matlab之間進(jìn)行切換。但是,頻繁的切換常常會(huì)干擾授課思路,打斷學(xué)生的連續(xù)性思維。為此,我們利用Matlab ActiveX自動(dòng)化技術(shù)與PowerPoint相結(jié)合,實(shí)時(shí)輸入Matlab計(jì)算指令,實(shí)時(shí)顯示計(jì)算結(jié)果,可達(dá)到教學(xué)課件與Matlab計(jì)算無(wú)縫鏈接的效果。
ActiveX是一種基于windows操作系統(tǒng)的各種面向?qū)ο蠹夹g(shù)的集合。借助ActiveX,開(kāi)發(fā)商和用戶可以把來(lái)自不同商家的ActiveX組件無(wú)縫地集成在自己的應(yīng)用程序中。Matlab支持ActiveX控件和ActiveX自動(dòng)化兩種技術(shù):其中,ActiveX自動(dòng)化使Matlab能施控或受控于其他組件。當(dāng)Matlab受控于其他組件時(shí),Matlab表現(xiàn)為自動(dòng)化服務(wù)器(Automation Server),它的功能是:使應(yīng)用程序可以在Matlab空間執(zhí)行指令,并與Matlab空間交換數(shù)據(jù)[3]。
Microsoft Windows應(yīng)用程序與Matlab ActiveX自動(dòng)化技術(shù)相鏈接,需要采用基于Microsoft的軟件編程語(yǔ)言:VBA(Visual Basic for Application)。VBA是Micorsoft Visual Basic的派生體,語(yǔ)言結(jié)構(gòu)和編程環(huán)境基本相同。唯一的區(qū)別是VBA與特定的應(yīng)用程序相關(guān)聯(lián),不能用來(lái)編寫(xiě)?yīng)毩⒌膽?yīng)用程序,只能在支持某個(gè)VBA的宿主程序中,建立和應(yīng)用VBA項(xiàng)目。
下面本文將以設(shè)計(jì)圖1和圖2所示的幻燈片為例,介紹如何采用VBA在PowerPoint中建立Matlab ActiveX自動(dòng)化服務(wù)器的具體過(guò)程。
1)配置控件
圖1中主要有三個(gè)控件,這是通過(guò)在PowerPoint中選擇“工具”—“自定義”菜單項(xiàng),在“工具欄”標(biāo)簽頁(yè)中選擇“控件工具箱”。在幻燈片適當(dāng)位置上拖動(dòng)鼠標(biāo),產(chǎn)生所需的控件,調(diào)整控件的大小、位置和名稱(chēng)等屬性。定義輸入命令串文本框inputBox,輸出結(jié)果文本框resultBox,執(zhí)行按鈕exeButton。
2)VBA編程
雙擊“執(zhí)行”按鈕,彈出VBA編程界面,在該按鈕的exeButton_Click事件中輸入以下代碼:
dim matlab as object%聲明對(duì)象
h=inputBox.value%獲取輸入文本框inputbox中的matlab指令字符串
result=matlab.execute(h);%執(zhí)行matlab命令
resultBox.value=result;%將執(zhí)行結(jié)果顯示在文本框resultBox中
set matlab=createobject(“matlab.application”)%createobject(class)用于創(chuàng)建并返回一個(gè)服務(wù)器對(duì)象,參數(shù)calss是服務(wù)器的外部對(duì)象名;matlab.execute(h)是服務(wù)器的自動(dòng)化方法,h為執(zhí)行指令,以“指令串”作為輸入?yún)⒘?,并以串的形式輸出?jì)算結(jié)果。
3)實(shí)時(shí)計(jì)算
保存后返回PPT設(shè)計(jì)界面。點(diǎn)擊“放映”圖標(biāo),進(jìn)入幻燈片放映狀態(tài),在輸入文本框中輸入Matlab指令后,點(diǎn)擊“執(zhí)行”按鈕,則在輸出框中顯示計(jì)算結(jié)果,如圖1所示。輸入窗口的命令可以在線修改和編輯,輸出結(jié)果實(shí)時(shí)刷新。
4)嵌入圖形
如需將Matlab繪制的圖形嵌入到幻燈片中,可按照以下步驟實(shí)現(xiàn):
(1)點(diǎn)擊“控件工具箱”上的“其他控件”圖標(biāo);
(2)選擇Microsoft Forms 2.0 Image,拖拉鼠標(biāo)創(chuàng)建圖形顯示框Image1,并設(shè)置相應(yīng)屬性;
(3)雙擊按鈕,彈出VBA編程界面,在該按鈕的exeButton_Click事件中嵌入代碼(略)。
完成以上步驟后,保存幻燈片。在“放映”狀態(tài)下,輸入matlab畫(huà)圖的指令,運(yùn)行結(jié)果如圖2所示。
頻率分辨率定義為Δf=1/T,其中T為時(shí)域信號(hào)有效時(shí)長(zhǎng)[4]。
由于頻域離散化是對(duì)無(wú)限長(zhǎng)信號(hào)進(jìn)行加窗截?cái)嘣斐傻?,所以頻率分辨率直接受到窗函數(shù)的長(zhǎng)度的影響。通過(guò)例題,對(duì)某信號(hào)進(jìn)行不同信號(hào)點(diǎn)數(shù)的DFT,觀察頻譜圖形的變化,窗長(zhǎng)和分辨率的關(guān)系一目了然。
[例1] 定義一個(gè)包含兩個(gè)諧波分量信號(hào):f1=0.2Hz和f2=0.21Hz,計(jì)算N取不同值時(shí)的DFT,觀察頻譜形狀。
為滿足分辨率要求,理論上至少應(yīng)選取的窗長(zhǎng)為T(mén)=1/(f2-f1)=100,當(dāng)信號(hào)長(zhǎng)度N=50<100時(shí),頻譜分析的結(jié)果是兩個(gè)間隔為0.01Hz的頻率成分混疊在一起,如圖3所示。
在命令輸入?yún)^(qū)修改參數(shù),令N=200,增大信號(hào)的時(shí)域有效長(zhǎng)度,DFT幅度譜如圖4所示。觀察圖4發(fā)現(xiàn),相鄰的兩個(gè)頻率成分被分辨開(kāi)來(lái)。由此可以得出信號(hào)的頻率分辨率隨著信號(hào)長(zhǎng)度的增加而提高的結(jié)論。
數(shù)字濾波器的極零點(diǎn)的位置確定了該系統(tǒng)的濾波特性。頻率響應(yīng)為傳遞函數(shù)的傅立葉變換,反映了濾波器對(duì)輸入信號(hào)的不同頻率分量在幅度和相位上的調(diào)制作用[4,5]。將濾波器的頻響曲線和極零點(diǎn)分布可視化,可幫助學(xué)生理解極零點(diǎn)位置對(duì)濾波器濾波特性的影響。
[例2] 給定濾波器的傳遞函數(shù)的系數(shù)矢量,試確定濾波器的極零分布和幅頻特性。
幻燈片設(shè)計(jì)有兩個(gè)圖形顯示區(qū),Matlab指令及顯示結(jié)果如圖5所示。在極點(diǎn)所對(duì)應(yīng)的頻率處,其幅頻響應(yīng)幅度出現(xiàn)峰值,即系統(tǒng)對(duì)此頻率處的信號(hào)有較高的增益,表現(xiàn)為通帶;在零點(diǎn)所對(duì)應(yīng)的頻率處,幅頻響應(yīng)幅度出現(xiàn)凹谷點(diǎn),即系統(tǒng)對(duì)該頻率處的信號(hào)實(shí)現(xiàn)抑制,表現(xiàn)為阻帶。
如果修改極零點(diǎn)位置,查看濾波器的幅頻曲線變化,可以輸入圖6“命令輸入?yún)^(qū)”的命令。
圖6運(yùn)行結(jié)果顯示,在單位圓上零點(diǎn)所對(duì)應(yīng)的頻率處,幅頻響應(yīng)為0,系統(tǒng)對(duì)此頻率處的信號(hào)完全抑制;而在離零點(diǎn)越遠(yuǎn)的頻率處,幅頻響應(yīng)幅值越高同理可以得到極點(diǎn)位置對(duì)濾波器濾波特性的影響。原點(diǎn)處的極零點(diǎn)不改變?yōu)V波特性。
Matlab ActiveX技術(shù)將Matlab與PPT無(wú)縫連接,充分利用了多媒體的圖文并茂和Matlab的數(shù)值計(jì)算能力,由Matlab指令構(gòu)成的例題、演示,可以在線修改參數(shù),將重點(diǎn)和難點(diǎn)直觀地展示出來(lái),彌補(bǔ)了課堂教學(xué)中實(shí)驗(yàn)不足的缺陷。實(shí)踐證明,基于Matlab ActiveX自動(dòng)化服務(wù)器的電子課件制作方法,保持了授課思路的連貫性,同時(shí)加強(qiáng)了學(xué)生理解、分析和解決問(wèn)題的能力。
[1] 崔靈智等.Matlab在數(shù)字信號(hào)處理課程設(shè)計(jì)中的應(yīng)用[J] .日照:山東水利職業(yè)學(xué)院院刊,2008(3)
[2] 張萌,武攀.基于Matlab的多采樣率信號(hào)處理教學(xué)設(shè)計(jì)[J] .南京:電氣電子教學(xué)學(xué)報(bào),2009(4)
[3] 張志涌等.精通Matlab6.5版[M] .北京:航空航天大學(xué)出版社.2003
[4] 胡廣書(shū).數(shù)字信號(hào)處理導(dǎo)論[M] .北京:清華大學(xué)出版社.2005
[5] 劉波.MATLAB信號(hào)處理[M] .北京:電子工業(yè)出版社,2006