Matlab ActiveX技术在“数字信号处理”教学中的应用
2012-10-12王雪飞王昌盛马月红
王雪飞,王昌盛,马月红
(军械工程学院1.光学与电子工程系2.教育技术中心,河北石家庄050003)
“数字信号处理”课程是电子工程与信息类专业的一门重要的基础课程。Matlab作为一门具有科学计算和可视化能力的软件工具,在“数字信号处理”的实验教学中发挥了重要作用[1,2]。教师可根据课程设计在基于PowerPoint的教学课件与Matlab之间进行切换。但是,频繁的切换常常会干扰授课思路,打断学生的连续性思维。为此,我们利用Matlab ActiveX自动化技术与PowerPoint相结合,实时输入Matlab计算指令,实时显示计算结果,可达到教学课件与Matlab计算无缝链接的效果。
1 Matlab ActiveX与PPT相结合
ActiveX是一种基于windows操作系统的各种面向对象技术的集合。借助ActiveX,开发商和用户可以把来自不同商家的ActiveX组件无缝地集成在自己的应用程序中。Matlab支持ActiveX控件和ActiveX自动化两种技术:其中,ActiveX自动化使Matlab能施控或受控于其他组件。当Matlab受控于其他组件时,Matlab表现为自动化服务器(Automation Server),它的功能是:使应用程序可以在Matlab空间执行指令,并与Matlab空间交换数据[3]。
Microsoft Windows应用程序与Matlab ActiveX自动化技术相链接,需要采用基于Microsoft的软件编程语言:VBA(Visual Basic for Application)。VBA是Micorsoft Visual Basic的派生体,语言结构和编程环境基本相同。唯一的区别是VBA与特定的应用程序相关联,不能用来编写独立的应用程序,只能在支持某个VBA的宿主程序中,建立和应用VBA项目。
下面本文将以设计图1和图2所示的幻灯片为例,介绍如何采用VBA在PowerPoint中建立Matlab ActiveX自动化服务器的具体过程。
1)配置控件
图1中主要有三个控件,这是通过在PowerPoint中选择“工具”—“自定义”菜单项,在“工具栏”标签页中选择“控件工具箱”。在幻灯片适当位置上拖动鼠标,产生所需的控件,调整控件的大小、位置和名称等属性。定义输入命令串文本框inputBox,输出结果文本框resultBox,执行按钮exeButton。
2)VBA编程
双击“执行”按钮,弹出VBA编程界面,在该按钮的exeButton_Click事件中输入以下代码:
dim matlab as object%声明对象
h=inputBox.value%获取输入文本框inputbox中的matlab指令字符串
result=matlab.execute(h);%执行matlab命令
resultBox.value=result;%将执行结果显示在文本框resultBox中
set matlab=createobject(“matlab.application”)%createobject(class)用于创建并返回一个服务器对象,参数calss是服务器的外部对象名;matlab.execute(h)是服务器的自动化方法,h为执行指令,以“指令串”作为输入参量,并以串的形式输出计算结果。
3)实时计算
保存后返回PPT设计界面。点击“放映”图标,进入幻灯片放映状态,在输入文本框中输入Matlab指令后,点击“执行”按钮,则在输出框中显示计算结果,如图1所示。输入窗口的命令可以在线修改和编辑,输出结果实时刷新。
4)嵌入图形
如需将Matlab绘制的图形嵌入到幻灯片中,可按照以下步骤实现:
(1)点击“控件工具箱”上的“其他控件”图标;
(2)选择Microsoft Forms 2.0 Image,拖拉鼠标创建图形显示框Image1,并设置相应属性;
(3)双击按钮,弹出VBA编程界面,在该按钮的exeButton_Click事件中嵌入代码(略)。
完成以上步骤后,保存幻灯片。在“放映”状态下,输入matlab画图的指令,运行结果如图2所示。
2 应用实例
2.1 离散傅立叶变换的频率分辨率
频率分辨率定义为Δf=1/T,其中T为时域信号有效时长[4]。
由于频域离散化是对无限长信号进行加窗截断造成的,所以频率分辨率直接受到窗函数的长度的影响。通过例题,对某信号进行不同信号点数的DFT,观察频谱图形的变化,窗长和分辨率的关系一目了然。
[例1] 定义一个包含两个谐波分量信号:f1=0.2Hz和f2=0.21Hz,计算N取不同值时的DFT,观察频谱形状。
为满足分辨率要求,理论上至少应选取的窗长为T=1/(f2-f1)=100,当信号长度N=50<100时,频谱分析的结果是两个间隔为0.01Hz的频率成分混叠在一起,如图3所示。
在命令输入区修改参数,令N=200,增大信号的时域有效长度,DFT幅度谱如图4所示。观察图4发现,相邻的两个频率成分被分辨开来。由此可以得出信号的频率分辨率随着信号长度的增加而提高的结论。
2.2 数字滤波器的频率响应和极零分布
数字滤波器的极零点的位置确定了该系统的滤波特性。频率响应为传递函数的傅立叶变换,反映了滤波器对输入信号的不同频率分量在幅度和相位上的调制作用[4,5]。将滤波器的频响曲线和极零点分布可视化,可帮助学生理解极零点位置对滤波器滤波特性的影响。
[例2] 给定滤波器的传递函数的系数矢量,试确定滤波器的极零分布和幅频特性。
幻灯片设计有两个图形显示区,Matlab指令及显示结果如图5所示。在极点所对应的频率处,其幅频响应幅度出现峰值,即系统对此频率处的信号有较高的增益,表现为通带;在零点所对应的频率处,幅频响应幅度出现凹谷点,即系统对该频率处的信号实现抑制,表现为阻带。
如果修改极零点位置,查看滤波器的幅频曲线变化,可以输入图6“命令输入区”的命令。
图6运行结果显示,在单位圆上零点所对应的频率处,幅频响应为0,系统对此频率处的信号完全抑制;而在离零点越远的频率处,幅频响应幅值越高同理可以得到极点位置对滤波器滤波特性的影响。原点处的极零点不改变滤波特性。
3 结语
Matlab ActiveX技术将Matlab与PPT无缝连接,充分利用了多媒体的图文并茂和Matlab的数值计算能力,由Matlab指令构成的例题、演示,可以在线修改参数,将重点和难点直观地展示出来,弥补了课堂教学中实验不足的缺陷。实践证明,基于Matlab ActiveX自动化服务器的电子课件制作方法,保持了授课思路的连贯性,同时加强了学生理解、分析和解决问题的能力。
[1] 崔灵智等.Matlab在数字信号处理课程设计中的应用[J] .日照:山东水利职业学院院刊,2008(3)
[2] 张萌,武攀.基于Matlab的多采样率信号处理教学设计[J] .南京:电气电子教学学报,2009(4)
[3] 张志涌等.精通Matlab6.5版[M] .北京:航空航天大学出版社.2003
[4] 胡广书.数字信号处理导论[M] .北京:清华大学出版社.2005
[5] 刘波.MATLAB信号处理[M] .北京:电子工业出版社,2006