当前位置:文档之家› _数字信号处理_动画课件设计【免费】

_数字信号处理_动画课件设计【免费】

收稿日期:2006209207;修回日期:2006212227

作者简介:帅晓飞(1980-),女,在读硕士研究生,主要从事信号与信息处理方面的研究.通讯作者:袁晓.E 2mail :xiaofei -shuai80@https://www.doczj.com/doc/0d18371053.html,

文章编号: 049026756(2007)0521025204

“数字信号处理”动画课件设计

帅晓飞,袁 晓,张 恒

(四川大学电子信息学院,成都610064)

摘 要:针对“数字信号处理”课程中一些教师不易讲解演示的问题,给出如何利用MA TLAB

设计通用的动画界面.详细探讨了设计中的核心问题:struct 语句和“UserData ”属性、滑块设置、少变化原则.以数字系统零极点与频率特征关系和数值卷积为实例,总结出设计“数字信号处理”课程中的动画课件的一般步骤,并给出相应的仿真图形.关键词:构架;demo ;滑块;MA TLAB ;“UserData ”中图分类号:G 434;TN911.72 文献标识码:A

Design animation course w are of “Digital Signal Processing ”

S HUA I Xiao 2f ei ,Y UA N Xiao ,ZHA N G Heng

(School of Electronic and Information Engineering ,Sichuan University ,Chengdu 610064,China )

Abstract :For some difficult problems that are hard to explain and demonstrate for teachers in “digital signal processing ”course ,this paper proposed how to design a general demo via MA TLAB.Firstly ,it discussed three main techniques of such design ,including struct and “UserData ”,how to set slider and the principle of the least https://www.doczj.com/doc/0d18371053.html,bining the relation between zeros -poles and frequency characteristics ,sequences con 2volution ,the three steps of designing a general animation courseware in “digital signal processing ”course are concluded.Meanwhile ,the simulation results of the two examples are displayed.K ey w ords :structure ,demo ,slider ,MA TLAB ,“UserData ”

1 引 言

“数字信号处理”课程里的G ibbs 现象、相关运算、卷积运算(特别是圆周卷积运算)及相关课程中一些学生难以理解,教师难以讲解演示的问题,在MA TLAB 里也没有相应的demo.张恒等人在文献[1]中提出用MA TLAB 设计“数字系统零极点与频率特征关系”动画界面,生动形象地反应了系统零极点图与幅频响应、相频响应的对应关系,增强了课堂效果.但这个方法还存在许多不足之处,为进一步完善美化界面,本文我们提出利用MA T 2LAB 设计任意动画课题界面的-个具体方法.用

这个方法可以作出一系列生动形象的动画界面,应用于课堂教学上,教师的讲解变的生动形象,学生就比较容易接受,能对知识达到更深刻的理解.

2 自制demo 函数的核心问题

如何生动形象地把知识传授给学生,是许多教师致力于解决的问题.文献[1~3]已经提供了把很多重难点问题制作成动画课件的具体做法,但缺乏解决任意问题的通用性.我们在深入研究所要解决问题的基础上,参考MA TLAB 里大量的演示界面

(demo ),如:G ain and Phase Margins Demo 、Low 2pass Filter Design Demo ,提出设计一个具有一定通

2007年10月 第44卷第5期四川大学学报(自然科学版)

Journal of Sichuan University (Natural Science Edition ) Oct.2007Vol.44 No.5

用性且实时性良好的课程动画界面(demo ).现拟出相应的关键技术.为清晰易懂起见,我们以“数字系统零极点与频率特征关系”的动画演示系统为例加以说明.

2.1 struct 语句和UserData 属性

demo 中实现动态界面是靠一系列的响应来完

成的,按钮响应、滑块响应、文本框响应、鼠标状态(按下、拖动、释放)响应等.在每一个响应中,都需要从主函数或上一级函数中代入参数,这些都是靠构架(Structure )和“UserData ”属性配合使用来实现的.由构架的特点可知,在struct 主体里可以存放任何类型的变量、常量、句柄等.“UserData ”属性是向用户提供存放变量的场所,虽然所存变量只能一个,但可以是MA TLAB 认可的任何数据类型(数值数组、字符串数组、构架数组、元胞数组).

下面以图1所示的零极点图单位圆上滑块实现.其响应函数中参数传递为例,分三个步骤详细说明struct 语句和“UserData ”属性的使用

.

图1 零极点图及滑块示意

Fig.1 Zero 2pole plot and slider display

滑块响应函数中的参数传递

1)我们可以将滑块响应函数的待用参数都放在零极点图的构架szp (structure of the zero 2pole plot )中:

szp =struct (’Parent ’,gcf ,’DataZero ’,zero ,’AxesHzp ’,hzp ,…%建立一个szp 构架其中gcf 是

当前图形,zero 是系统函数的零点向量,hzp 是零极点图轴句柄,及滑块响应待用的其它参数一并定义在szp 中.

2)用set 命令将szp 存放到滑块(其句柄名为slider )的“UserData ”中:

set (slider ,’UserData ’,szp ,’CallBack ’,@Slid 2

erCallback );%存放szp

3)编写滑块响应函数SliderCallback ,并用get

语句读取本事件的“UserData ”,即构架szp ,也就实

现了上一级函数参数的传递.读取szp 的程序如下:

function SliderCallback (event Src ,eventData ,action ) %响应函数

szp =get (event Src ,’UserData ’

); %在响应函数中读取szp 2.2 自制滑块

滑块是实现demo 动画过程的核心,用其滑动

表示某个参数的变化以牵动整个演示图形的改变.设置可任意改变其属性(放置位置、形状、颜色、步长、响应函数)的滑动轨迹、滑块能大大改善demo 效果.

解决问题的办法是自己编写具有一定功能的滑块子函数.如图1所示的滑块子函数SliderFun 要满足这样的要求:以零极点图的单位圆为滑动轨迹,滑块在单位圆上并连接到各零极点;只要鼠标移到滑块上,箭头变成手掌,按下鼠标后,手掌变成拳头,继续按住鼠标拖动,滑块在单位圆上跟随鼠标滑动;滑块实时的位置通过不断捕获鼠标的“XData ”和“Y Data ”;将这个直角坐标参数“XData ”和“Y Data ”转换成角弧度赋给“Value ”;每个“Val 2ue ”值对应一个角频率值牵动幅频响应、相频响应的变化;具有不同功能的响应属性:按下“Window 2ButtonDownFcn ”、拖动“WindowButtonMotionFcn ”、释放“WindowButtonUpFcn ”和响应“CallBack ”.

需要特别说明的是,在这个子函数中,只能用低层图形指令(line ).用line 设置的滑块只有按下属性,没有拖动、释放属性.我们注意到只要滑块按下了而未释放,则整个图形的拖动、释放属性就是滑块本身的属性.只需在按下响应中获取整个图形(Figure )这些状态属性进行编辑作为当前滑块的响应属性,一旦滑块释放后就需还原图形的这些属性值.调用滑块子函数并将其句柄赋给slider 的命令如下:

slider =SliderFun (’Parent ’,hzp ,’XData ’,NaN ,’Y Data ’,NaN ,…’Marker ’,’s ’,’Marker 2FaceColor ’,[101],’Value ’,V ,’Step ’,23pi/100,…’Range ’,[023pi ],’ButtonDownFcn ’,BDF ,’Callback ’,CB ,’ButtonUp Fcn ’,BU F );2.3 少变化原则

要达到动态适时的目的,在建立响应时要最大

6

201四川大学学报(自然科学版)第44卷

限度地少演算、少重画.以文献[1]中图2为例,滑块的动作只引起滑块、滑块到零极点的直线以及幅频、相频响应中的指示原点和竖线的变化,整个图形的框架不变.也就是说响应发生时要最大限度地少变化.

少变化原则的具体做法是:一、在主程序中,把整个图形的框架搭好,并返回相应的句柄,有些对象的属性值暂时缺省,如需要用户输入才能确定的就用NaN替代.结合struct和“UserData”.在响应程序中,只用set(”PropertName”,PropertValue)语句修改变化对象的“XData”和“Y Data”,避免调用line等语句画整个对象.二、当只需对某一部分进行修改时,用set命令修改对象的“Xdata”和“Yda2 ta”.并且在重画图形对象的一部分之前,需要把待变化对象的“EraseMode”设置成“X or”,这个属性的作用是刷新图形,重画与背景颜色不一样的新图形.如更新图1中的零点,可在响应程序中编写两条语句来实现:

set([hzdot,hpdot],’erasemode’,’xor’);%设置零点对象hzdot的插除属性为X or

set(hzdot,’XData’,real(ZeroData),’Y Data’, imag(ZeroData));%改变hzdot的X、Y值其中Ze2 roData是zero向量经过处理后的值.

3 自制demo函数的步骤

结合文献[1]中制作demo步骤和我们实现demo的经验,归纳出做好一个demo的主要步骤,这里只详细讨论跟文献[1]中不一样的地方:第一步:界面布局及滑块函数生成

编写主函数,搭好整个图形的框架:标题、菜单条、axes设置图形轴属性、uicontrol设置控件(按钮、文本框等)、滑块和图形中待画线条的句柄等,编写SliderFun及其响应子函数,生成滑块,返回所有对象的句柄.

第二步:界面的初始化

用一个初始数据将界面初始化.

第三步:动态关系

动态关系可以通过滑块、按钮及其他有属性“CallBack”或“WindowButtonDownFcn”或“Win2 dowButtonMotionFcn”或“WindowButtonUp Fcn”的对象来实现,正确合理使用struct、set、get语句及“UserData”、“EraseMode”、“XData”和“Y Data”属性.4 实例分析

4.1 数字系统零极点与特征关系的动画设计

对于形如:

H(z)=

b M z M+b M-1z M-1+Λ+b1z+b0

a N z N+a N-1z N-1+Λ+a1z+a0

(1)的系统,这个动画界面的要求是接收任意的系统函数系数(b0,b1,…,b M)和(a0,a1,…a,N)并画出相应的零极点图(Zero Pole Plot)、幅频(Magnitude Response)和相频(Phase Response)响应图,同时单位圆上的点D(单位圆上红色滑块)不断移动,可以得到相应的幅频和相频细节(红色指示条),如图2所示

:

图2 数字系统零极点及特征关系demo

Fig.2 Demo of the relation between zeros2poles and fre2 quency characteristics in digital system

下面是给出这个demo的设计步骤和关键问题:

第一步:首先用三个axes语句划分出三块图形界面,如零极点图界面:hzpmap=axes(’Parent’, fig,’Units’,’normalized’,’Position’,[0.050.57 0.350.35],…’XLim’,[-1.5 1.5],’Y Lim’, [-1.2 1.2],’DrawMode’,’fast’,’Color’,[11 1],…’Visible’,’on’,’XScale’,’linear’,’XCol2 o r’,Prefs.AxesForegroundColor,…’YColor’, Prefs.AxesForegroundColor);

每一图形对象也都应该先画好(都用line命令而避免用plot或stem),如零极点图中的零极点、单位圆、零极点到滑块的线条、两条虚线.再用uicontrol设置三个按钮、四个静态文本框、三个可编辑文本框,如静态文本框可这样设置:

N T=uicontrol(’parent’,fig,’units’,’

7201

第5期帅晓飞等:“数字信号处理”动画课件设计 

norm’,’horizontal’,’left’,…

按第一节中列出的核心问题和注意事项编写滑块子函数,并生成滑块对象,返回句柄slider.

第二步:当可编辑文本框的A,B系数输入后,按下“response”(其句柄设置为PR)得出系统的零极点图、幅频响应和相频响应.我们把所有要在子程序中用到的轴句柄、图象句柄、文本框句柄、滑块句柄放在构架szp中,再把szp放在按钮PR的“UserData”里:set(PR,’UserData’,szp,’Call2 Back’,@ButtonUpdate)

一旦按下“response”按钮,就执行ButtonUp2 date,首先获取“UserData”中的szp,将两个文本框里的内容进行系统分析,算出A,B对应的零极点、幅频响应、相频响应,同时用set修改三个图形块里若干对象的“XData”和“Y Data”.同时把参量零极点(zero,pole)和幅度,相位及角频率(h,phi,w)也放到szp结构里以便下一步滑块调用.

第三步:这是整个界面设计的核心环节,这一步的关键是找零极点图单位圆上各点与幅频响应、相频响应上各点的对应关系.为实现这一目标,我们在单位圆上设置了一个滑块实现互动.

set(szp.slider,’UserData’,szp,…

 ’ButtonDownFcn’,@SliderCallback);

且需分别在子程序中定义好滑块的按下、拖动和释放属性.

4.2 数字卷积动态界面设计

在这个例子中,我们设计数字卷积的动态界面,如图3所示.

这个界面的效果是:

(1)加载待卷积的信号:s1[n]和s2[n].

(2)界面初始化:显示s1[n]、s2[n]、s2[-n]和y[n]=s1[n]3s2[n].

(3)动态关系的建立:当鼠标指针移到红色滑块时,指针变成展开的“手”,当按下鼠标时变成握紧的‘拳’,这时拖动鼠标可以拖动信号s2[-n],同时相应的y[n]也会适时计算并显示出来

.

图3 数字卷积demo

Fig.3 Demo of the digital convolution

5 结 语

我们介绍的设计信号处理相关课程动画界面的方法具有很大的移植性:一、可以用VC++、VB、VF、Delphi等界面设计语言代替MA TLAB实现.二、还可将此方法应用于其他课程的其它难点问题中.这样做成课件应用到课堂上,既可以使课堂教学生动美妙,又能加深同学们对问题的理解,强化他们对知识的掌握,推动理论教学的可视化建设,改善教学效果.由于完整程序长达1000行,本文未提供,读者可向作者索取.

参考文献:

[1] 张恒,袁晓,汤韩杰,等.数字系统零极点与频率特征

关系的动画界面[J].电气电子教学学报,2006,28

(3):102.

[2] Sanjit K.Mitra.数字信号处理—基于计算机的方法

[M].北京:清华大学出版社,2001.

[3] 张志涌.精通MA TLAB6.5版[M].北京:北京航空

航天大学出版社,2004.

8201四川大学学报(自然科学版)第44卷

相关主题
文本预览
相关文档 最新文档