matlab GUI设计Word下载.docx
- 文档编号:17475121
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:33
- 大小:408.84KB
matlab GUI设计Word下载.docx
《matlab GUI设计Word下载.docx》由会员分享,可在线阅读,更多相关《matlab GUI设计Word下载.docx(33页珍藏版)》请在冰豆网上搜索。
列表框
ListBox
显示下拉文字列表,用户可以从列表中选择一项和多项。
弹出式菜单
PopupMenu
相当于文本框和列表框的组合,用户可以从下拉列表中选择。
坐标轴
Axes
用于绘制坐标轴。
*控件的常用属性:
创建控件以后,要对控件的各种属性值进行设置,大部分控件都要对以下的属性值进行设置:
(1)string属性:
用于显示在控件上的字符串,起说明或提示作用。
(2)callback属性:
回调函数,与菜单的一样。
(3)enable属性:
表示该控件是否有效,”on“表示有效,”off“表示无效。
(4)tooltipstring属性:
当鼠标放在控件上时显示提示信息,为字符串。
(5)字体属性:
包括fontname,fontsize等。
(6)Tag属性:
控件的标记,用于标识控件。
(7)Units取值可以是pixels(缺省值),normalized(相对单位),inches,centimeters或points(磅);
*实现GUI的基本机制是对控件的属性编程,特别是对其回调函数(callback)的编写。
注意回调函数的概念,它指的是在对象的某一个事件发生时,MATLAB内部机制允许自动调用的函数。
其几个参数的意思分别为:
hObject表示当前窗口的句柄;
eventdata表示事件代码,为保留;
handles是该窗口中的所有句柄的集合。
例1:
利用GUI工具箱设计一界面使其满足如下的功能。
(1)在编辑框中,可输入表示阻尼比的标量或“行数组”数值,并在按【enter】键后,在轴上画出相应的蓝色曲线(坐标范围:
X轴[0,15];
Y轴[0,2])。
(2)在点击【Gridon】或【Gridoff】键时,在轴上画出或删除“分格线”;
缺省时无分格线。
(3)在菜单【Options】下,有2个下拉菜单【Boxon】和【Boxoff】;
缺省时为Boxoff状态。
(4)所设计的界面和其上图形对象、控件对象都按比例缩放。
界面的最终效果如下:
解:
1.启动GUI工具箱以后,布置如下图所示的界面:
上述界面包含一个坐标轴控件、两个静态文本框控件、一个可编辑文本框、两个按钮控件。
2.对各控件进行属性设置:
1)双击工作区或控件可引出图形窗和相应控件的“属性编辑框(PropertyInspector)”。
在图形窗的属性编辑框中,设置如下属性值:
⏹NameMyguil%图形窗的名称
⏹Resizeon%图形窗可以缩放
⏹Tagfiguer1%生成handles.figure1域存放图形窗句柄
2)在轴属性编辑框中,设置如下属性值:
⏹Unitsnormalized%采用相对度量单位,缩放时保持比例
⏹Boxoff%坐标轴不封闭
⏹Tagaxes1%生成handles.axes1域存放轴句柄
⏹XLim[0,15]%X轴范围
⏹YLim[0,2]%Y轴范围
3)在图形区上方的静态文本的属性编辑框中,设置如下属性值:
⏹Fontsize0.696%字体大小
⏹FontUnitsnormalized%采用相对度量单位,缩放时保持字体比例
⏹String归一化二阶系统的阶跃响应曲线%显示在界面上的字符
⏹Tagtitle_text%生成handles.title_text域存放静态文本句柄
⏹HorizontalAlignmentCenter%文字中心对齐
⏹Unitsnormalized%采用相对度量单位,缩放时保持该区比例
4)在可编辑文本上方的静态文本的属性编辑框中,设置如下属性值:
⏹Fontsize0.351%字体大小
⏹FontUnitsnormalized%采用相对度量单位,缩放时保持字体比例
⏹HorizontalAlignmentCenter%文字中心对齐
⏹String系统阻尼比%显示在界面上的字符
⏹Tagedit_text%生成handles.edit_text域存放静态文本句柄
⏹Unitsnormalized%采用相对度量单位,缩放时保持该区比例
5)在可编辑文本的属性编辑框中,设置如下属性值:
⏹Fontsize0.626%字体大小
⏹String%在界面上显示为空白
⏹Tagzeta_edit%生成handles.zeta_edit域存放弹出式选单句柄
6)在上按键的属性编辑框中,设置如下属性值:
⏹Fontsize0.485%字体大小
⏹StringGridon%在按键上显示Gridon
⏹TagGridOn_push%生成handles.GridOn_push域存放该键句柄
⏹Unitsnormalized%采用相对度量单位,缩放时保持该键比例
7)在下按键的属性编辑框中,设置如下属性值:
⏹Fontsize0.485%字体大小
⏹StringGridoff%在按键上显示Gridoff
⏹TagGridOff_push%生成handles.GridOff_push域存放该键句柄
至此对控件属性的设置基本结束,得到如下界面:
3.创建菜单
点击“菜单编辑器”图标,引出空白菜单编辑对话窗,再点击该对话窗最左上方的“新菜单NewMenu”图标,在左侧空白窗口中,出现”Untitled1”图标;
点击此图标则在右侧引出填写栏,在“lable”中填写Options;
在“Tag”中填写options,于是左侧的”Untitled1”图标变成“Options”图标,表示此菜单已生成。
先点亮左侧的“Option”图标,再点击菜单编辑对话窗上的“新菜单项NewMenuItem”图标,就引出等待定义的菜单项;
在右侧的“Label”中填写Boxon,在“Tag”中填写box_on。
重复该小步操作,建立另一个菜单项Boxoff。
注意:
菜单编辑对话窗上的“Callback”不要填写,机器自动生成。
4.界面的激活与回调函数的生成
点击工作台上的”运行界面“的工具图标,会出现一个询问对话框,当按提示对以上的设计进行存储以后,就会引出2个界面:
名为Myguil的(待激活的)图形用户界面;
展示名为Myguil的(待填写回调指令的)M函数文件的文件编辑器界面。
同时,在当前目录或给定目录上,由MATLAB自动生成了2个文件,即Myguil.fig和Myguil.m。
1)在Myguil.m文件中,填写回调指令:
functionvarargout=zeta_edit_Callback(hObject,eventdata,handles,varargin)
z=str2num(get(handles.zeta_edit,‘String’))%从编辑框中获取zeta数据
t=0:
0.1:
15;
%设置时间采样数组
cla%clearcurrentaxis
fork=1:
length(z)
y(:
k)=step(1,[1,2*z(k),1],t);
%计算阶跃输出
line(t,y(:
k));
%绘制曲线
end
2)对Gridon与Gridoff控件的回调函数的编写
Functionvarargout=GridOn_push_Callback(hObject,eventdata,handles,varargin)
gridon
functionvarargout=GridOff_push_Callback(hObject,eventdata,handles,varargin)
gridoff
3)对box_on与box_off回调函数的编写
functionvarargout=box_on_Callback(hObject,eventdata,handles,varargin)
boxon%配合菜单Boxon的操作指令
set(handles.box_on,‘enable’,‘off’)%使菜单项Boxon失能
set(handles.box_off,‘enable’,‘on’)%使菜单项Boxoff使能
functionvarargout=box_off_Callback(hObject,eventdata,handles,varargin)
boxoff%配合菜单Boxoff的操作指令
set(handles.box_off,‘enable’,‘off’)%使菜单项Boxoff失能
set(handles.box_on,‘enable’,‘on’)%使菜单项Boxon使能
经过以上几个步骤生成的图形用户界面已经可以使用了,只要Myguil.m和Myguil.fig在当前目录或在MATLAB搜索路径上,那么在指令窗运行Myguil就能使用该界面,如下:
输入阻尼比后显示如下:
点击Gridon后弹出的界面如下,点击Gridoff后弹出的界面如上图。
至此设计完成。
*控件对象的建立
Matlab提供了用于建立控件对象的函数uicontrol,其调用格式为:
对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)
例2:
建立数制转换对话框。
在左边输入一个十进制整数和2~16之间的数,单击“转换”按钮能在右边得到十进制数所对应的2~16进制字符串,单击“退出”按钮退出对话框。
程序如下:
hf=figure('
Color'
[0,1,1],'
Position'
[100,200,400,200],...
'
Name'
'
数制转换'
NumberTitle'
off'
MenuBar'
none'
);
uicontrol(hf,'
Style'
Text'
'
Units'
normalized'
...
[0.05,0.8,0.45,0.1],'
Horizontal'
center'
String'
输入框'
Back'
[0,1,1]);
[0.5,0.8,0.45,0.1],...
输出框'
Frame'
[0.04,0.33,0.45,0.45],...
[1,1,0]);
[0.05,0.6,0.25,0.1],...
十进制数'
[0.05,0.4,0.25,0.1],...
2~16进制'
he1=uicontrol(hf,'
Edit'
[0.25,0.6,0.2,0.1],...
[0,1,0]);
he2=uicontrol(hf,'
[0.25,0.4,0.2,0.1],...
[0.52,0.33,0.45,0.45],...
ht=uicontrol(hf,'
[0.6,0.5,0.3,0.1],...
COMM=['
n=str2num(get(he1,'
'
));
b=str2num(get(he2,'
dec=trdec(n,b);
set(ht,'
string'
dec);
];
Push'
[0.18,0.1,0.2,0.12],...
转换'
Call'
COMM);
[0.65,0.1,0.2,0.12],...
退出'
close(hf)'
程序调用了trdec.m函数文件,该函数的作用是将任意十进制整数转换为2~16进制字符串。
trdec.m函数文件如下:
functiondec=trdec(n,b)
ch1='
0123456789ABCDEF'
;
%十六进制的16个符号
k=1;
whilen~=0%不断除某进制基数取余直到商为0
p(k)=rem(n,b);
n=fix(n/b);
k=k+1;
end
k=k-1;
strdec='
whilek>
=1%形成某进制数的字符串
kb=p(k);
strdec=strcat(strdec,ch1(kb+1));
dec=strdec;
上述程序运行的结果如下图:
在输入框中输入一个十进制的数以及一个要转换的进制数以后,点击转换即可得到结果,例如在十进制数中输入123456789,在2—16进制中输入16点击转换即得一下结果如下图:
常用颜色与其对应数值
颜色
R分量(红色)
G分量(绿色)
B分量(蓝色)
黑色
白色
1
红色
绿色
蓝色
黄色
洋红色
蓝绿色
灰色
0.5
暗红
铜色
0.62
0.40
碧绿色
0.49
0.83
例3建立图形演示对话框。
在编辑框输入绘图命令,单击“绘图”按钮能在左边坐标轴得到所对应的图形,弹出框提供色图控制,列表框提供坐标网格线和坐标边框控制。
对控件的编程如下:
clf;
set(gcf,'
Unit'
[0.2,0.3,0.65,0.35]);
set(gcf,'
Menubar'
图形演示'
axes('
[0.05,0.15,0.55,0.7]);
uicontrol(gcf,'
text'
Posi'
[0.63,0.85,0.2,0.1],'
输入绘图命令'
hedit=uicontrol(gcf,'
edit'
[0.63,0.15,0.2,0.68],...
Max'
2);
%Max取2,使Max-Min>
1,从而允许多行输入
hpopup=uicontrol(gcf,'
popup'
[0.85,0.8,0.15,0.15],'
Spring|Summer|Autumn|Winter'
hlist=uicontrol(gcf,'
list'
[0.85,0.55,0.15,0.25],'
Gridon|Gridoff|Boxon|Boxoff'
hpush1=uicontrol(gcf,'
push'
[0.85,0.35,0.15,0.15],'
绘图'
[0.85,0.15,0.15,0.15],'
关闭'
closeall'
set(hpush1,'
COMM(hedit,hpopup,hlist)'
程序中回调函数COMM的程序如下:
functionCOMM(hedit,hpopup,hlist)
com=get(hedit,'
n1=get(hpopup,'
Value'
n2=get(hlist,'
if~isempty(com)%编辑框输入非空时
eval(com'
%执行从编辑框输入的命令
chpop={'
spring'
summer'
autumn'
winter'
};
chlist={'
gridon'
gridoff'
boxon'
boxoff'
colormap(eval(chpop{n1}));
eval(chlist{n2});
得到的界面如下:
上图是在绘图命令的窗口中输入绘图的命令以后所得到的图形。
position'
位置向量[xywidthheight]。
其中,[xy]表示相对于图形对象左下角的uicontrol的左下角位置。
[widhtheight]表示uicontrol的尺寸大小,其单位由属性Units确定
Units包括
inches:
centimeters:
normalized:
points:
{pixels}:
位置属性值的单位依次为
英寸
厘米
归一化的坐标值,图形的左下角映射为[0
0]而右上角的映射为为[1
1]
打印设置点,等于1/72英寸
屏幕的象素。
计算机屏幕分辨率的最小单位。
*菜单设计
建立自定义的用户菜单的函数为uimenu,格式为:
Hm=uimenu(Hp,属性名1,属性值1,属性名2,属性值2,…)
功能:
创建句柄值为Hm的自定义的用户菜单。
其中Hp为其父对象的句柄,属性名和属性值构成属性二元对,定义用户菜单的属性。
因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。
建立一级菜单项的函数调用格式为:
一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)
建立子菜单项的函数调用格式为:
子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,…)
菜单对象常用的属性:
菜单对象除具有Children(子对象),Parent(父对象),Tag(标签),Type(类型),UserData(用户数据),Enable(使能)和Visible(可见性)等公共属性,还有一些常用的特殊属性,如回调(callback)属性和菜单名(label)。
另外,用户菜单的外观有四个属性:
Position(位置),Separator(分隔线),checked(检录符)和ForeGroundColor(前景颜色)。
1Tag属性
Tag属性的取值是字符串,它定义了该菜单对象的一个标识值。
定义了Tag属性后,在任何程序中都可以通过这个标识值找出该菜单对象。
2Type属性
Type属性的取值总是uimenu,这个属性值标明图形对象的类型。
对菜单对象,其类型就是uimenu,用户不能改写这个属性。
3UserData属性
UserData属性的取值是一个矩阵,缺省值为空矩阵,用户可以在这个属性中保存与该菜单对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab GUI设计 GUI 设计