第7讲 Matlab的GUI程序设计Word文档格式.docx
- 文档编号:5225806
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:23
- 大小:128.81KB
第7讲 Matlab的GUI程序设计Word文档格式.docx
《第7讲 Matlab的GUI程序设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《第7讲 Matlab的GUI程序设计Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
句柄变量=figure(属性名1,属性值1,属性名2,属性值2,…)
MATLAB为每个图形窗口提供了很多属性。
这些属性及其取值控制着图形窗口对象。
除公共属性外,其他常用属性:
MenuBar属性、Name属性、Position属性、Color属性等。
2.坐标轴对象
建立坐标轴对象使用axes函数,调用它的命令形式为:
句柄变量=axes(属性名1,属性值1,属性名2,属性值2,…)
MATLAB为每个坐标轴对象提供了很多属性。
除公共属性外,还有其他常用属性。
四、Matlab的GUI设计:
GUI(GraphicUserInterface),即图形用户界面。
1、GUI设计的原则
针对用户不同的需要,设计出的图形用户界面也各不相同。
一般而言,一个较好的界面都遵循以下三个特征:
简单性、一致性和熟悉性。
简单性
在设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。
一些可有可无的功能应尽量删去,以保证界面的整洁。
设计的图形界面要直观,应多采用图形,而尽量避免数据。
设计的界面应尽量减少窗口的数目,力求避免在不同窗口之间进行来回切换。
一致性
一是用户自己开发的界面风格要尽量一致;
二是新设计的界面要与其它已有的界面风格尽量保持一致。
用户在初次使用新界面时,总是习惯于凭经验进行试探。
例如,图形显示区通常安排在界面的左侧,按键等控制区通常放在右侧。
熟悉性
在设计新界面时,应尽量使用人们熟悉的标志和符号,设计出友好、令人舒适的用户界面。
用户可能并不了解新界面的具体含义和操作方法,但完全何以根据熟悉的标志作出正确的猜测,便于学习和使用。
除了上述对界面的静态要求外,还应要求界面的动态性。
例如,所设计的界面对于用操作的响应要迅速和连续;
对持续时间较长的运算要给出等待时间提示,并允许用户中断等。
2、GUI设计的步骤
图形用户界面的制作一般包括界面设计和程序实现,对于初学者,建议按照下述步骤进行:
(1)分析界面所要求实现的主要功能,以明确设计任务;
(2)在纸上绘出界面草图,并站在使用者的角度审查草图;
(3)按照构思的草图,上机制作静态界面,并检查它;
(4)编写界面动态功能的程序,对功能进行逐项检查。
注意:
这只是一种建议,在设计中,步骤间也许要交叉或重复执行。
由于设计和实现过程往往不是一步到位的,可能需要反复修改才能获得满意的界面。
GUI包含两类基本的图形对象:
一是用户界面控件对象(Uicontrol),简称为控件对象;
一是用户界面菜单对象(Uimenu),简称为菜单对象。
五、用户控件制作函数uicontrol
1、用于制作图形用户界面上的其它控件。
主要有以下10种类型:
push,按钮
radio,选择按钮
toggle,双位按钮
check,检录框
list,列表框
popup,弹出框
slide滑动条
edit可编辑文本框
text静态文本框
frame控件区域框
2、控件制作函数uicontrol的使用格式:
hc=uicontrol(hc_parant,'
style'
'
CntlName'
CntlP'
CntlV'
…)
hc为控件句柄名
hc_parant为句柄hc的父对象句柄
CntlName为控件类型名
CntlP为句柄hc的属性名
CntlV为句柄hc的属性值
例7.1创建一个界面(图7-1)包含4种控件:
静态文本、选择开关、双位按键、控件区域框。
编写M脚本文件examGUI7_1.m,运行该文件便可得如图7-1所示的界面。
图7-1静态文本、选择开关、双位按键及控件区域框
[examGUI7_1.m]
clfreset
%以下三句对图形窗口的工具条,窗口及控件的位置和尺寸进行设置。
set(gcf,'
menubar'
)
unit'
normalized'
position'
[0.2,0.2,0.64,0.32]);
defaultuicontrolunits'
)
h_axes=axes('
[0.05,0.2,0.6,0.6]);
%设置轴
t=0:
pi/50:
2*pi;
y=sin(t);
plot(t,y);
%画sin(t)的图形
set(h_axes,'
xlim'
[0,2*pi]);
%设置轴上x坐标的范围
defaultuicontrolhorizontal'
left'
);
%把y轴放在窗口的左边
htitle=title('
正弦曲线'
defaultuicontrolfontsize'
12);
%设置控件字体的大小
uicontrol('
frame'
...
'
[0.67,0.55,0.25,0.25]);
%设置框架控件
text'
string'
正斜体图名:
...
[0.68,0.77,0.18,0.1],...
horizontal'
%设置静态文本控件
hr1=uicontrol(gcf,'
radio'
...
正体'
...
[0.7,0.69,0.15,0.08]);
%设置选择按钮控件1
set(hr1,'
value'
get(hr1,'
Max'
));
%设置hr1属性value的值='
max'
(选择按钮有点提示选中此项)
callback'
[...
'
)),'
...
set(hr2,'
get(hr2,'
min'
set(htitle,'
fontangle'
normal'
),'
]);
%选择按钮选中时,取normal字体
hr2=uicontrol(gcf,'
...%设置选择按钮控件2
'
斜体'
[0.7,0.58,0.15,0.08],...
[...
italic'
)'
%选择按钮选中时,取斜字体
ht=uicontrol(gcf,'
toggle'
...%设置双位按钮,注意与单功能按钮的区别
Grid'
[0.67,0.40,0.15,0.12],...
grid'
例7.2如图7-2建立数制转换对话框。
在左边输入一个十进制整数和2~16之间的数,单击“转换”按钮能在右边得到十进制数所对应的2~16进制字符串,单击“退出”按钮退出对话框。
程序如下[examGUI7_2.m]:
hf=figure('
Color'
[0,1,1],'
Position'
[100,200,400,200],...
Name'
数制转换'
...
NumberTitle'
off'
MenuBar'
uicontrol(hf,'
Style'
Text'
'
Units'
[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,'
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:
kb+1));
k=k-1;
dec=strdec;
例7.3制作一个(如图7-3所示)能绘制任意图形的交互界面。
它包括:
可编辑文本框、弹出框、列表框。
图7-3
本例的关键内容是:
1)如何使编辑框允许输入多行指令。
2)在利用M函数文件创建用户界面时,如何依靠全局变量传递控件的图柄,保证回调动作正确执行。
(1)编写M函数文件examGUI7_3.m和calledit1.m
[examGUI7_3.m]
functionexamGUI6()
globalhedithpophlist%定义全局变量
clfreset
%以下各句对图形窗口及其子对象进行设置
[0.1,0.4,0.85,0.35]);
11);
defaultuicontrolfontname'
隶书'
%以下各句对图形窗口的标题进行设置
str='
通过多行指令绘图的交互界面'
name'
str,'
numbertitle'
%以下各句在图形窗口安置轴
[0.05,0.15,0.45,0.70],'
visible'
%以下各句在图形窗口设置text对象,并在其上输出'
绘图指令输入框'
uicontrol(gcf,'
[0.52,0.87,0.26,0.1],...
%以下各句在图形窗口设置edit对象
hedit=uicontrol(gcf,'
edit'
[0.52,0.05,0.26,0.8],...
2);
%以下各句在图形窗口设置popup对象(弹出式菜单)
hpop=uicontrol(gcf,'
popup'
[0.8,0.73,0.18,0.12],...
spring|summer|autumn|winter'
%以下各句在图形窗口设置list对象(列表框)
hlist=uicontrol(gcf,'
list'
[0.8,0.23,0.18,0.37],...
Gridon|Boxon|Hiddenoff|Axisoff'
%以下各句在图形窗口设置push对象(按钮)
hpush=uicontrol(gcf,'
push'
[0.8,0.05,0.18,0.15],'
Apply'
%在编辑框输入数据,按回车时调用calledit1子函数
set(hedit,'
calledit1'
%选中弹出式菜单时,调用calledit1子函数
set(hpop,'
%选中按钮时,调用calledit1子函数
set(hpush,'
[calledit1.m]
functioncalledit1()
globalhedithpophlist%引用已定义的全局变量
ct=get(hedit,'
%把编辑框的字符输入到ct
vpop=get(hpop,'
%把选中的弹出菜单的选项输入到vpop
vlist=get(hlist,'
%把选中的弹出菜单的选项输入到vlist
if~isempty(ct)%如果ct中字符不空,则执行以下语句,否则什么都不干
eval(ct'
)%画函数图形
popstr={'
spring'
summer'
autumn'
winter'
};
liststr={'
gridon'
boxon'
hiddenoff'
axisoff'
invstr={'
gridoff'
boxoff'
hiddenon'
axison'
colormap(eval(popstr{vpop}))%用列表框选中的颜色着色
vv=zeros(1,4);
vv(vlist)=1;
%将列表框选中的项赋值1
fork=1:
4
ifvv(k);
eval(liststr{k});
elseeval(invstr{k});
end
(2)在MATLAB指令窗中运行examGUI7_3.m就可获得题目所要求的图形用户界面。
(3)分别在'
中输入如下两组命令,进行测试:
ezsurf('
x^2*exp(-x^2-y^2)'
shadinginterp;
light;
lightinggouraud;
----
[X0,Y0,Z0]=sphere(30);
X=2*X0;
Y=2*Y0;
Z=2*Z0;
surf(X0,Y0,Z0);
holdon,mesh(X,Y,Z),colormap(hot),holdoff;
hiddenoff;
lightingphong;
axisequal,axisoff;
六、用代码来制作GUI界面
例7.4对于传递函数为
的归一化二阶系统,制作一个能绘制该系统单位阶跃响应的图形用户界面。
本例演示:
(A)图形界面的大致生成过程;
(B)静态文本和编辑框的生成;
(C)坐标网格控制键的形成;
(D)如何使用该界面。
(1)产生图形窗和轴位框:
如图7-4所示。
图7-4产生坐标轴
%set(0,'
DefaultFigureColor'
b'
H=axes('
[0,0,1,1],'
%建立轴,并取轴句柄H
currentaxes'
H);
%在当前图形窗口上安置坐标轴H
\fontname{隶书}归一化二阶系统的阶跃响应曲线'
text(0.12,0.93,str,'
fontsize'
13);
%在H上,相对于左下角的取值
h_fig=get(H,'
parent'
%取H的父句柄h_fig=gcf
set(h_fig,'
[0.1,0.2,0.7,0.4]);
%设置图形窗口h_fig的位置[0.1,0.2,0.7,0.4](相对于屏幕)
h_fig,...
[0.1,0.15,0.55,0.7],...
[015],'
ylim'
[01.8],'
8);
%在H窗口上指定位置画新轴
(2)在坐标框右侧生成作解释用的“静态文本”和可接收输入的“编辑框”:
如图7-5所示。
图7-5在图形界面中添加编辑框和文本框
h_text=uicontrol(h_fig,'
[0.67,0.73,0.25,0.14],...
{'
输入阻尼比系数'
zeta='
});
%在图形窗口(h_fig)指定位置[0.67,0.73,0.25,0.14]上生成文本标签
h_edit=uicontrol(h_fig,'
[0.67,0.59,0.25,0.14],...
z=str2num(get(gcbo,'
0.1:
15;
fork=1:
length(z);
y(:
k)=step(1,[12*z(k)1],t);
plot(t,y(:
k));
if(length(z)>
1),holdon,end,'
end;
h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7讲 Matlab的GUI程序设计 Matlab GUI 程序设计