图形界面设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6 图形界面设计
所谓图形用户界面GUI,简单地说,是指包括了各种图形控制对象,如图形窗口,菜单,对话框以及文本框等内容的界面。

利用这些用户界面,用户可以和计算机之间进行信息交流。

用户可以通过某种方式来选择或者激活这些图形对象,运行一些特性的M文件,利用MATLAB提供的图形用户界面设计向导,用户可以非常方便快捷地设计一个图形用户界面,就好像在windows的画图工具中进行绘图一样。

利用该向导,极大地方便了用户,让用户能够在很短的时间内完成一个非常复杂的图形界面外观设计。

一旦用户完成了该图形界面的外观设计,确定了所有按钮以及图形的位置,那么就可以利用MATLAB的回调程序编辑器来编写MATLAB的源程序代码,从而可使该图形界面能够完成特定的任务[12]。

MATLAB7.5提供了非常强大的编写图形用户界面的功能,它为图形界面的设计提供了新方法。

比如提供了更完善的标准联机帮助系统的设计方法以及提供的标准对话框可以直接调用。

该版本改进用户图形界面开发程序Guide,使得该软件完全是可视的,在风格上与Microcoft Windows 的作图软件窗口极其相似。

可以非常快捷、非常方便的设计出友好的界面。

这是FORTRAN语言和C语言所不能比拟的(虽然C语言(c++builder)也能设计出友好的界面,但仍较MATLAB复杂得多)。

本文就是利用MATLAB7.5设计出图形用户界面,通过函数的调用来实现该软件的功能。

6.1 步骤
(1)点击桌面上的MATLAB7.5图标打开MATLAB,点击工具栏内的GUI图标就可进入到GUI的开发环境下。

(2)把一个Axes控件、九个Edit Text控件和十一个Static Text、四个Push Button控件拖到控件布局编辑区并布局好。

(3)按照设计需要依次选中各控件,单击属性查看器按钮打开其属性列表。

在String、Call back、Tag属性栏中依次输入所需要的字符串。

(4)根据需要为回调函数编写M文件(即为本次设计的主程序和子程序)。

(5)点击GUI工具栏中的“保存”按钮保存设计的GUI,单击工具栏M-file 按钮,我们可以看到M-file文件生成。

再单击激活窗口按钮▲,就可以运行我们编写的程序了。

这时桌面上就会弹出如图6-1所示的界面。

图6-1 PID控制器参数优化界面
说明:
二维坐标图用于显示所寻优的系统在寻优前后动态性能的对比。

输入数据框1中,t为系统周期,numdk为G(s)函数的分子项,denda为G(s)函数分母项的第一个乘式项,dendb为G(s)函数分母项的第二个乘式项。

保存按钮,用于把输入框输入的数据以字符形式保存到预定的mat文件中,需要用时再从该文件中载入。

依靠pid_build_save函数实现其功能。

从上面可以看出,实现寻优功能的是内部程序,界面只是起联系用户和内部程序的作用,为用户提供简便的操作。

输入数据框2用于输入寻优的必要数据,其中n为寻优参数个数,x0为寻优参数初值,l为寻优步长,u为扩张因子,v为收缩因子,e为寻优允许误差,k1为用户设定的寻优次数。

运行状态框,当程序运行时显示“正在运行”,当程序运行完毕时显示“运行完毕”。

输出结果包括仿真次数、Kp、Ti、Td、完成拍数和超调量。

只有在运行完毕时才显示。

载入按钮,功能是把输入框的数据载入到程序中,其功能的实现是依靠调用pid_load函数实现的。

执行按钮,运行寻优程序,实现本软件的所有计算功能,是本软件的核心部分,依靠调用pid_count2函数程序实现其功能。

关闭按钮,是用来关闭程序,依靠调用pid_close函数实现其功能。

6.2 利用属性编辑器来添加属性内容
(1)编辑文本框[12]
把属性“String”设置为空。

此外,打开属性编辑器,把标签属性“Tag”设置为“pid_edit”。

“Call back”设置为“pid_edit”,这表明用户在输入数据时,就执行回调函数pid_edit。

实际上可以为回调函数pid_edit编写一个M文件,打开文件编辑器,在编辑框中输入如下命令:
%input data
function pid_edit
ct=get ( findobj (gcbf ,'tag', 'pid_edit' ), 'string' );
%获得当前图形窗口的标签为“pid_edit”的句柄对象。

%findobj: 寻找具有指定属性的对象图表。

%gcbf:返回包含回叫对象的句柄。

Matlab help里的解释:Get handle of figure containing object whose callback is executing.
save indata ct;
%把获得的变量ct保存在indata.mat文件中。

(2)下载按钮
把属性“String”设置为“下载”。

此外,打开属性编辑器,把标签属性“Tag”设置为“pid_load”。

“Call back”设置为“pid_load”,这表明用户在输入数据时,就执行回调函数pid_load。

实际上可以为回调函数pid_load编写一个名为“pid_load.m”M文件,打开文件编辑器,在编辑框中输入如下命令:
%get the user's data
function pid_load
ct=get ( findobj (gcbf ,'tag', 'pid_load' ), 'string' );
%获得当前图形窗口的标签为“pid_load”的句柄对象。

%findobj: 寻找具有指定属性的对象图表。

%gcbf: 返回包含回叫对象的句柄。

Matlab help里的解释:Get handle of figure
containing object whose callback is executing.
save indata ct;
(3)运行按钮
把属性“String”设置为“运行”。

此外,打开属性编辑器,把标签属性“Tag”设置为“pid_count2”。

“Call back”设置为“pid_count2”,这表明用户在输入数据时,就执行回调函数pid_count2。

实际上可以为回调函数pid_count2编写一个M文件,打开文件编辑器,在编辑框中输入如下命令:(附录I)(4)关闭按钮
把属性“String”设置为“关闭”。

此外,打开属性编辑器,把标签属性“Tag”设置为“pid_close”。

“Call back”设置为“pid_close”,这表明用户在输入数据时,就执行回调函数pid_close。

实际上可以为回调函数pid_close编写一个M文件,打开文件编辑器,在编辑框中输入如下命令:
%close the figure
function pid_close
close(gcbf); %关闭当前窗口
(5)保存按钮
把属性“String”设置为“保存”。

此外,打开属性编辑器,把标签属性“Tag”设置为“pid_build_save”。

“Call back”设置为“pid_build_save”,这表明用户在输入数据时,就执行回调函数pid_build_save。

实际上可以为回调函数
pid_build_save编写一个M文件,打开文件编辑器,在编辑框中输入如下命令:%save g(s) function data
function pid_build_save
gs=get ( findobj (gcbf ,'tag', 'pid_edit_1' ), 'string' );
%获得当前图形窗口的标签为“pid_edit_1”的句柄对象。

%findobj:寻找具有指定属性的对象图表。

%gcbf:返回包含回叫对象的句柄。

Matlab help里的解释:Get handle of figure containing object whose callback is executing.
save gsdata gs;
%把获得的变量gs保存在indata.mat文件中。

close(gcbf);
7 仿真及其调试结果
7.1 调试步骤
不管使用何种软件,一般都应该进行以下测试
[17]:
1.编辑框接受命令能力的测试
一般分为三种类型:
(1)单行命令、多行命令。

(2)二维图形命令、三维图形命令。

(3)静态图形命令、动态图形命令。

2.空间能力的测试
一般可分为三个方面:
(1)缺省设置是否合理。

(2)变化控件选项,界面表现是否正常。

(3)是否有多项选择能力。

3.菜单能力测试
应该对每一个菜单项单独进行测试,看是否达到设计要求。

7.2 Matlab 调试指令
通过使用 Matlab 调试指令对程序进行调试,可以得到一个分析报告,我们可以了解到我们所编写的程序的每一个部分所花费的时间,这样我们就可以根据这些资料对已有程序进行改进,可以提高我们所编写的程序的效率。

充分利用Matlab 系统提供的调试命令,更快地发现问题,及时解决问题,会大大减轻以后的编程与调试工作。

7.3 举例仿真及调试结果
已知一个控制系统:输入信号为r(t)=1;零阶保持;目标函数为 dt t e t Q
⎰∞=0)( (7-1) 被控对象传递函数为: )112.0()144.0(1
)(2++=s s s G (7-2)
采用PID控制器;采样周期为T=0.1s,输入参数初值为:比例系数kp=1.2;积分系数ti=0.56;微分系数td=0.11;扩张因子u=1.75;收缩因子v=0.75;步长l=0.05;允许误差e=0.01。

仿真结果图如图7-1所示:
图7-1 仿真结果图
由以上仿真图可知,经过12次寻优:Kp=1.11736,Ti=0.749583,Td=0.11625。

说明参数寻优使系统的动态特性得到了较大的提高。

由此我们可以看出,用MATLAB 语言编写优化程序,不但程序简单,而且得到的结果直观,具有很好的使用价值。

相关文档
最新文档