1 3 基于GUI的《信号与系统实验》仿真平台的设计 3.1 设计思想 3.1.1 设计步骤 本课题设计的界面布局是先设计GUI总界面,然后设计子界面,再在子界面上设置按钮、坐标轴、文本框等一系列控件,最后借助于callback函数调用程序。在函数调用程序的设计中先编写各个子界面中的回调函数下的程序,再编写GUI界面的回调函数下的程序。 1. 用MATLAB的GUIDE提供的创建图形界面工具设计整个实验仿真界面的主界面,在设计子界面; 2. 在实验子界面中添加各个控件对象,编写控件按钮回调函数,实现每个控件的控制功能,直接通过界面上的控件实现对结果的分析; 3. 最后编写GUI总界面的回调函数程序,把所有的子界面集合在总界面中,通过总界面可以进入任意子界面中并可以进行操作; 4. 退出实验界面。 设计流程如图3-1:
编写子界面控件 按钮的回调函数
在子界面中添加 相应的控件按钮
最后编写GUI主界面回调函数,总界面可进入任意实验子界面
先设计GUI主界 面再设计子界面
退出实验界面 2
图3-1 设计流程图 3.1.2 实验系统整体结构设计 信号与系统实验繁多、复杂、许多实验还需要输入参数,若将系统设计成一个界面,使得系统繁重、拥挤、不能够实现友好,美化的界面的设计要求。因此,在设计界面的时候,采用一个主界面和若干个子界面,每个子界面是一个模块,实现一个实验或功能,并且可以通过主界面调用子界面的设计方法。 本实验系统整体结构设计由两部分组成:界面模块设计和菜单模块设计。其中界面模块中包含六大实验模块:主界面模块、基本信号的产生实验模块、信号的基本运算实验模块、卷积实验模块、傅里叶变换实验模块、连续零状态响应实验模块、低通滤波器实验模块。如傅里叶变换实验模块又包含方波傅里叶实验界面、离散傅里叶实验界面、快速傅里叶实验界面。在菜单设计时,在实验子界面中除了使用系统约定的菜单条外,还增加了几个控制背景和退出实验的菜单。系统的整体结构如图3-2所示:
图3-2 实验系统的整体结构 3.2 基于GUI的系统总界面的设计 3.2.1 设计步骤 在GUIDE的编辑界面中,在空白处双击或者单机右键选择property inspector,出现属性设置对话框,可以对GUI的属性风格进行个性化。Color选项可以改变背景颜色,选择自己喜欢的颜色,本课题是插入图片。Position选项可以对界面窗口的大
基本信号的产生
信号的基本运算
卷积
傅立叶变换 连续系统零状态
低通滤波器
主界面 退出界面 3
小进行调整,窗口的大小可以通过设置width和height进行调整,也可以用鼠标拖拽窗口,用鼠标拖拽窗口设置比较方便、快捷,也更容易设置适合于实验设计内容的大小GUI界面。 下面详细介绍主界面的设计过程:
点击运行MATLAB软件后,在软件界面中直接点击GUIDE工具,选择Create New GUI中的Blank GUI(Defarlt)点击OK,在弹出的新建窗口中拖入7个静态文本框(Statec Text)和7个按钮(Push Button)如图3-4所示。设置静态文本的String为“基于GUI的信号与系统仿真实验平台的设计”Background Color为浅红色,FontSize为28.0,Foreground Color位黑色。依次设置另外六个静态文本框String为“实验一基本信号的产生”、“实验二信号的基本运算”、“实验三卷积”、“实验四傅里叶变换”、“实验五连续系统零状态响应”、“实验六低通滤波器”这几个实验的Fonsize为22.0,另外的六个按钮依次设计的Fonsize为16.0。点击每个实验后的按钮编写回调函数进入相应的实验子界面中,也可参考图3-3流程:
图3-3 主界面流程图 在其相应的位置编写主界面进入子界面的程序如下: function pushbutton1_Callback(hObject, eventdata, handles)
创建New GUI点击OK,在窗口中拖入7个静态文本框和7个按钮
结束 在文本框中依次输入每个实验字体,设置字体的背景颜色、大小,
编写主界面进入子界面中的调用函数 在界面中Menu Editor中加入主界面标题
点击MATLAB软件中的GUIDE工具 4
set(0,'CurrentFigure',jbxhdcs)进入“实验一基本信号的产生”实验中可实现信号的产生。 还可在主界面中插入一些背景图片,使主界面看起来更加的美观,如添加学校 LOGO、风景图片等来美化实验主界面。插入背景图片相应的需要编写回调函数,点击主界面背景函数Callback中的CreateFcn进入相应的程序编写位置,编写的背景插入图片的程序参考附录,点击主界面中的运行按钮如图3-5所示是设计完成后的实验系统主界面。
3.2.2 主界面仿真平台设计 在设计的主界面平台添加相应的按钮、文本框、设置字体的大小和字体背景的颜色,编写回调函数和界面背景图片插入。如图3-4所示:
图3-4 主界面 3.2.3 仿真结果分析 点击运行按钮后的主界面仿真结果如图3-5所示,可以点击任意一个实验按钮进入相应的子界面实验中,实验仿真结果结束后,可点击退出按钮结束本次实验。 5
图3-5 运行后的主界面 3.3 基于GUI的系统子界面的设计 3.3.1 设计步骤 子界面的设计和主界面的设计有些相似,主要由每个控件的属性,并加入相应的回调函数callback程序实现其相应的功能。如图3-7所示以“基本信号的产生”子界面为例,点击Menu Editor 中的New Menu会出现Untitled1,在其上点击出现Menu Properties,修改其中的Label选项,命名为“基本信号的产生”。 点击Axes按钮,在GUIDE界面空白处适当位置点击,会出现一个坐标轴图标,用鼠标拖拽到想要的大小。在此图标上点击右键,在View Callback选项中选择buttondownfcn,编写回调函数。选择Static text按钮,在空白处点击左键,把出现在窗口中的Static文本拖拽到适当大小,单击右键或双击左键,设置背景颜色“Background color”,字体颜色“Foreground color”,字体大小“Font size”;选择Edit text按钮,在空白处适当位置处点击,把出现的文本框拖拽到适当大小,双击左键,设置“String”为“”等的属性。本课题设计的字体大小一般设置为15,有的会适当调整。“退出”的设置:在Push button5上双击左键将“String”选项内容改为“退出”,在这个按钮的回调函数view Callback中的Callback选项下写入“Close jbxhdcs”就可实现子界面的关闭。可参考流程图3-6:
创建子界面
坐标和按钮调节到适当的大小,设置界面背景颜色,按钮字体大小(15)、颜色
在子界面中添加坐标、控件按钮 6
图3-6 子界面参考流程图 3.3.2 《信号与系统实验》仿真子平台的设计 1 实验一:基本信号的产生 基本信号的产生包含了正弦信号、指数信号、单位脉冲信号、单位阶跃信号。在界面中输入正弦信号的幅度、角度、相位为2 3 1;在指数信号下输入幅度、相位为3 2;在单位脉冲信号下输入平移量5;在单位阶跃下输入4;相应的各个信号波形输出呈现的图形如图3-7所示: 7
图3-7 基本信号的产生界面 (1)正弦信号 正弦信号的大小与方向都是随时间作周期性变化的,信号在任一时刻的值,称为瞬时值。其公式如下,一般写做: )sin(tAy (3-1) 式中A为振幅,为角频率,为初相位。正弦信号是周期信号,其周期T与角频率f满足下列关系式: fT/1 (3-2) (2)指数信号 指数信号一般分为实指数信号与复指数信号,指数信号的表达式为: atektf*)( (3-3)
在式中,a是实数。若0a,信号将随着时间而增长;若0a,信号则随时间衰减。常数k表示指数信号在0t点的初始值。
(3)单位脉冲信号 冲激函数)(t表示在0t处的冲激,在1tt处出现的冲激可写为)(1tt
狄拉克(Dirac)给出了冲击函数的另一种定义:1dtδ(t)0,1)(tt (3-4)式中1)(dtt的含义是该函数波形下的面积等于1,呈现出的的波形如图3-7所示。 (4)单位阶跃信号
单位阶跃信号的公式:)0(0)0(1)(nntu (3-5) 类似于连续时间系统中的单位阶跃信号)(tu,但应注意)(tu在0t点发生跳变,往往不予定义,而在)(nu在0n点明确规定为1)0(u。在该子界面单位阶跃信号那栏里输入平移量4,输出的波形如图3-7所示。参考附录程序。 2 实验二:信号的基本运算。常遇到的信号基本计算包括信号的翻转、平移、相加、相乘等。 (1)序列的翻转和平移。在翻转处输入翻转量为2,在平移处输入平移量3,原序列和翻转、平移后的序列如图3-8所示: