王雪飛,王昌盛,馬月紅
(軍械工程學院1.光學與電子工程系2.教育技術(shù)中心,河北石家莊050003)
“數(shù)字信號處理”課程是電子工程與信息類專業(yè)的一門重要的基礎(chǔ)課程。Matlab作為一門具有科學計算和可視化能力的軟件工具,在“數(shù)字信號處理”的實驗教學中發(fā)揮了重要作用[1,2]。教師可根據(jù)課程設計在基于PowerPoint的教學課件與Matlab之間進行切換。但是,頻繁的切換常常會干擾授課思路,打斷學生的連續(xù)性思維。為此,我們利用Matlab ActiveX自動化技術(shù)與PowerPoint相結(jié)合,實時輸入Matlab計算指令,實時顯示計算結(jié)果,可達到教學課件與Matlab計算無縫鏈接的效果。
ActiveX是一種基于windows操作系統(tǒng)的各種面向?qū)ο蠹夹g(shù)的集合。借助ActiveX,開發(fā)商和用戶可以把來自不同商家的ActiveX組件無縫地集成在自己的應用程序中。Matlab支持ActiveX控件和ActiveX自動化兩種技術(shù):其中,ActiveX自動化使Matlab能施控或受控于其他組件。當Matlab受控于其他組件時,Matlab表現(xiàn)為自動化服務器(Automation Server),它的功能是:使應用程序可以在Matlab空間執(zhí)行指令,并與Matlab空間交換數(shù)據(jù)[3]。
Microsoft Windows應用程序與Matlab ActiveX自動化技術(shù)相鏈接,需要采用基于Microsoft的軟件編程語言:VBA(Visual Basic for Application)。VBA是Micorsoft Visual Basic的派生體,語言結(jié)構(gòu)和編程環(huán)境基本相同。唯一的區(qū)別是VBA與特定的應用程序相關(guān)聯(lián),不能用來編寫獨立的應用程序,只能在支持某個VBA的宿主程序中,建立和應用VBA項目。
下面本文將以設計圖1和圖2所示的幻燈片為例,介紹如何采用VBA在PowerPoint中建立Matlab ActiveX自動化服務器的具體過程。


1)配置控件
圖1中主要有三個控件,這是通過在PowerPoint中選擇“工具”—“自定義”菜單項,在“工具欄”標簽頁中選擇“控件工具箱”。在幻燈片適當位置上拖動鼠標,產(chǎn)生所需的控件,調(diào)整控件的大小、位置和名稱等屬性。定義輸入命令串文本框inputBox,輸出結(jié)果文本框resultBox,執(zhí)行按鈕exeButton。
2)VBA編程
雙擊“執(zhí)行”按鈕,彈出VBA編程界面,在該按鈕的exeButton_Click事件中輸入以下代碼:
dim matlab as object%聲明對象
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)建并返回一個服務器對象,參數(shù)calss是服務器的外部對象名;matlab.execute(h)是服務器的自動化方法,h為執(zhí)行指令,以“指令串”作為輸入?yún)⒘浚⒁源男问捷敵鲇嬎憬Y(jié)果。
3)實時計算
保存后返回PPT設計界面。點擊“放映”圖標,進入幻燈片放映狀態(tài),在輸入文本框中輸入Matlab指令后,點擊“執(zhí)行”按鈕,則在輸出框中顯示計算結(jié)果,如圖1所示。輸入窗口的命令可以在線修改和編輯,輸出結(jié)果實時刷新。
4)嵌入圖形
如需將Matlab繪制的圖形嵌入到幻燈片中,可按照以下步驟實現(xiàn):
(1)點擊“控件工具箱”上的“其他控件”圖標;
(2)選擇Microsoft Forms 2.0 Image,拖拉鼠標創(chuàng)建圖形顯示框Image1,并設置相應屬性;
(3)雙擊按鈕,彈出VBA編程界面,在該按鈕的exeButton_Click事件中嵌入代碼(略)。
完成以上步驟后,保存幻燈片。在“放映”狀態(tài)下,輸入matlab畫圖的指令,運行結(jié)果如圖2所示。
頻率分辨率定義為Δf=1/T,其中T為時域信號有效時長[4]。
由于頻域離散化是對無限長信號進行加窗截斷造成的,所以頻率分辨率直接受到窗函數(shù)的長度的影響。通過例題,對某信號進行不同信號點數(shù)的DFT,觀察頻譜圖形的變化,窗長和分辨率的關(guān)系一目了然。
[例1] 定義一個包含兩個諧波分量信號:f1=0.2Hz和f2=0.21Hz,計算N取不同值時的DFT,觀察頻譜形狀。
為滿足分辨率要求,理論上至少應選取的窗長為T=1/(f2-f1)=100,當信號長度N=50<100時,頻譜分析的結(jié)果是兩個間隔為0.01Hz的頻率成分混疊在一起,如圖3所示。
在命令輸入?yún)^(qū)修改參數(shù),令N=200,增大信號的時域有效長度,DFT幅度譜如圖4所示。觀察圖4發(fā)現(xiàn),相鄰的兩個頻率成分被分辨開來。由此可以得出信號的頻率分辨率隨著信號長度的增加而提高的結(jié)論。


數(shù)字濾波器的極零點的位置確定了該系統(tǒng)的濾波特性。頻率響應為傳遞函數(shù)的傅立葉變換,反映了濾波器對輸入信號的不同頻率分量在幅度和相位上的調(diào)制作用[4,5]。將濾波器的頻響曲線和極零點分布可視化,可幫助學生理解極零點位置對濾波器濾波特性的影響。
[例2] 給定濾波器的傳遞函數(shù)的系數(shù)矢量,試確定濾波器的極零分布和幅頻特性。
幻燈片設計有兩個圖形顯示區(qū),Matlab指令及顯示結(jié)果如圖5所示。在極點所對應的頻率處,其幅頻響應幅度出現(xiàn)峰值,即系統(tǒng)對此頻率處的信號有較高的增益,表現(xiàn)為通帶;在零點所對應的頻率處,幅頻響應幅度出現(xiàn)凹谷點,即系統(tǒng)對該頻率處的信號實現(xiàn)抑制,表現(xiàn)為阻帶。
如果修改極零點位置,查看濾波器的幅頻曲線變化,可以輸入圖6“命令輸入?yún)^(qū)”的命令。
圖6運行結(jié)果顯示,在單位圓上零點所對應的頻率處,幅頻響應為0,系統(tǒng)對此頻率處的信號完全抑制;而在離零點越遠的頻率處,幅頻響應幅值越高同理可以得到極點位置對濾波器濾波特性的影響。原點處的極零點不改變?yōu)V波特性。


Matlab ActiveX技術(shù)將Matlab與PPT無縫連接,充分利用了多媒體的圖文并茂和Matlab的數(shù)值計算能力,由Matlab指令構(gòu)成的例題、演示,可以在線修改參數(shù),將重點和難點直觀地展示出來,彌補了課堂教學中實驗不足的缺陷。實踐證明,基于Matlab ActiveX自動化服務器的電子課件制作方法,保持了授課思路的連貫性,同時加強了學生理解、分析和解決問題的能力。
[1] 崔靈智等.Matlab在數(shù)字信號處理課程設計中的應用[J] .日照:山東水利職業(yè)學院院刊,2008(3)
[2] 張萌,武攀.基于Matlab的多采樣率信號處理教學設計[J] .南京:電氣電子教學學報,2009(4)
[3] 張志涌等.精通Matlab6.5版[M] .北京:航空航天大學出版社.2003
[4] 胡廣書.數(shù)字信號處理導論[M] .北京:清華大學出版社.2005
[5] 劉波.MATLAB信號處理[M] .北京:電子工業(yè)出版社,2006