第八章 MATLAB用户介面设计.docx
- 文档编号:3880955
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:26
- 大小:317.45KB
第八章 MATLAB用户介面设计.docx
《第八章 MATLAB用户介面设计.docx》由会员分享,可在线阅读,更多相关《第八章 MATLAB用户介面设计.docx(26页珍藏版)》请在冰豆网上搜索。
第八章MATLAB用户介面设计
第八章MATLAB用户界面设计
用户界面(或接口)是指:
人与机器(或程序)之间交互作用的工具和方法。
如键盘、鼠标都可成为与计算机交换信息的接口。
图形用户界面(GraphicalUserInterfaces,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
假如读者所从事的数据分析、解方程、计算结果可视工作比较单一,那么一般不会考虑GUI的制作。
但是如果读者想向别人提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一。
第一节简单用户界面制作
对于传递函数为
的归一化二阶系统,制作一个能绘制该系统单位阶跃响应的图形用户界面。
演示:
(1)图形界面的大致生成过程;
(2)静态文本和编辑框的生成;
(3)坐标方格控制键的形成;
(4)如何使用该界面。
1、产生图形框和轴位框(exam8_1.m)
clfreset
H=axes('unit','normalized','position',[0,0,1,1],'visible','off');
set(gcf,'currentaxes',H);
str='\fontname{隶书}归一化二阶系统的阶跃响应曲线';
text(0.12,0.93,str,'fontsize',13);
h_fig=get(H,'parent');
set(h_fig,'unit','normalized','position',[0.1,0.2,0.7,0.4]);
h_axes=axes('parent',h_fig,...
'unit','normalized','position',[0.1,0.15,0.55,0.7],...
'xlim',[015],'ylim',[01.8],'fontsize',8);
2、在坐标右侧生成“静态文本”和可接受输入的“编辑框”(exam8_2.m)。
h_text=uicontrol(h_fig,'style','text',...
'unit','normalized','position',[0.67,0.73,0.25,0.14],...
'horizontal','left','string',{'输入阻尼比系数','zeta='});
h_edit=uicontrol(h_fig,'style','edit',...
'unit','normalized','position',[0.67,0.59,0.25,0.14],...
'horizontal','left',...
'callback',[...
'z=str2num(get(gcbo,''string''));',...
't=0:
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;',...
'holdoff,']);
3、制作坐标网格控制按键(exam8_3.m)。
h_push1=uicontrol(h_fig,'style','push',...
'unit','normalized','position',[0.67,0.37,0.12,0.15],...
'string','gridon','callback','gridon');
h_push2=uicontrol(h_fig,'style','push',...
'unit','normalized','position',[0.67,0.15,0.12,0.15],...
'string','gridoff','callback','gridoff');
4、输入阻尼系数,可得单位阶跃响应曲线。
5、输入阻尼系数数组,可得一组单位阶跃响应曲线。
第二节用户界面的设计原则和一般步骤
一、设计原则
1、简单性
设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。
那些可有可无的功能,应尽量删去,以保持界面的整洁。
设计的图形界面要直观,为此,应多采用图形,而尽量避免数值。
2、一致性
所谓一致性有两层含义:
一是,读者自己开发的界面风格要尽量一致;二是,新设计的界面要与其他已有的界面风格不要截然相左。
比方说,图形显示区常安排在界面左半区,而按键等控制区被排在右侧。
3、习常性
设计新界面时,应尽量使用人们所熟悉的标志和符号。
用户可能并不了解新界面的具体含义及操作方法,但他完全可以根据熟悉标志作出正确猜测,自学入门。
4、其他考虑因素
除了以上对界面的静态要求外,还应注意界面的动态性能。
如界面对用户操作的响应要迅速、连续;对持续时间较长的运算,要给出等待时间提示,并允许用户中断。
二、一般制作步骤
(1)分析界面所要实现的主要功能,明确设计任务;
(2)在稿纸上绘出界面草图,并站在使用者的角度来审查草图;
(3)按构思的草图,上机制作(静态)界面,并检查之;
(4)编写界面动态功能的程序,对功能进行逐项检查。
第三节菜单设计
一、图形窗的标准菜单
在缺省情况下产生的MATLAB图形窗口总有一个顶层菜单条。
它包含七个标准菜单项:
文件(File)、编辑(Edit)、查看(View)、插入(Insert)、工具(Tools)、窗口(Window)和帮助(Help)。
每个顶层菜单在点击时都会产生一个下拉菜单。
这标准菜单受界面菜单“MenuBar”属性管理。
该属性有两个取值[none|{figure}]。
例:
隐藏和恢复标准菜单的显示。
1、获得缺省设置的标准菜单
H_fig=figure
2、隐去标准菜单
set(H_fig,'MenuBar','none');
3、恢复图形上的标准菜单
set(gcf,'menubar','figure');
二、菜单对象常用属性
菜单对象具有Children、Parent、Tag、Type、UserData、Visible等公共属性,除公共属性外,还有一些常用的特殊属性。
1、菜单名属性
属性“Label”用来命名用户菜单的名称,它的属性一定是字符串。
该字符串应选得简短扼要反映相应操作本质。
2、回调属性
回调函数属性的取值也是字符串。
该字符串可以包含任何MATLAB的合法命令和M文件名。
当用用户选用该菜单时,回调的作用是:
将那属性值字符串送给eval去执行,以实现该菜单的功能。
如果不设置回调,则用户选择菜单时,将没有任何反应。
例:
在图形窗上自制一个名为【Test】的“顶层菜单项”;当用鼠标点动该菜单项时,将产生一个带分格的封闭坐标轴。
通过本例说明:
(1)回调属性的运作机理;
(2)用户顶层菜单项的制作;
(3)uimenu属性的设置方法;
(4)复杂字符串的构成方法和注意事项。
①命令结果演示
gridon,set(gca,'box','on')
②回调结果与写法
uimenu('Label','Test','Callback','gridon,set(gca,''box'',''on''),')
③回调属性字符串全部放在方括号内,并有续行标志
uimenu('Label','Test',...
'Callback',['gridon,',...
'set(gca,''box'',''on'');'])
④串变量法
Lpv='Test';
Cpv=['gridon,','set(gca,''box'',''on''),'];
uimenu('Label',Lpv,'Callback',Cpv)
⑤构架表示法
PS.Label='Test';
PS.Callback=['gridon;','set(gca,''box'',''on'');'];
uimenu(PS)
三、用户自制菜单
要建立用户菜单可用uimenu函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。
建立一级菜单项的函数调用格式为:
一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)
建立子菜单项的函数调用格式为:
子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,…)
例:
自制一个带下拉菜单表的用户菜单。
该菜单能使图形窗背景颜色设置为兰色或红色(exam8_4.m)。
figure
h_menu=uimenu(gcf,'label','Color');
h_submenu1=uimenu(h_menu,'label','Blue',...
'callback','set(gcf,''Color'',''blue'')');
h_submenu2=uimenu(h_menu,'label','Red',...
'callback','set(gcf,''Color'',''red'')');
四、设置简捷键或快捷键
例:
(exam8_5.m)
figure
h_menu=uimenu(gcf,'Label','&Color');
h_submenu1=uimenu(h_menu,'Label','&Blue',...
'Callback','set(gcf,''color'',''blue'')');
h_submenu2=uimenu(h_menu,'label','Red',...
'Callback','set(gcf,''color'',''red'')',...
'Accelerator','r');
五、用户菜单的外观设计
用户菜单的外观主要取决于四个属性:
位置(Position)、分隔线(Separator)、检录符(Checked)、前景颜色(ForgroundColor)。
例:
(1)把用户菜单'Option'设置为顶层的第3菜单项;
(2)下拉菜单被两条分隔线分为三个菜单区;
(3)最下菜单项又有两个子菜单组成。
①制作菜单(exam8_6.m)
figure
BackColor=get(gcf,'Color');
h_menu=uimenu('label','Option','Position',3);
h_sub1=uimenu(h_menu,'label','gridon','callback','gridon');
h_sub2=uimenu(h_menu,'label','gridoff','callback','gridon');
h_sub3=uimenu(h_menu,'label','boxon','callback','boxon',...
'separator','on');
h_sub4=uimenu(h_menu,'label','boxoff','callback','boxoff');
h_sub5=uimenu(h_menu,'label','FigureColor','Separator','on');
h_subsub1=uimenu(h_sub5,'label','Red','callback','set(gcf,''Color'',''r'')');
h_subsub2=uimenu(h_sub5,'label','Reset',...
'callback','set(gcf,''Color'',BackColor)');
②位置属性的获取
Pos_O=get(h_menu,'position'),%查询Option菜单位置值
Pos_BoxOn=get(h_sub3,'position')%查询boxob子菜单位置值
Pos_Red=get(h_subsub1,'position')%查询red子菜单的位置值
Pos_O=
3
Pos_BoxOn=
3
Pos_Red=
1
③检录符的使用
例:
当某菜单项选中后,如何使该菜单项贴上检录符“√”(exam8_7.m)。
figure
h_menu=uimenu('label','Option');
h_sub1=uimenu(h_menu,'label','Gridon',...
'callback',[...
'gridon,',...
'set(h_sub1,''checked'',''on''),',...
'set(h_sub2,''checked'',''off''),',...
]);
h_sub2=uimenu(h_menu,'label','Gridoff',...
'callback',[...
'gridoff,',...
'set(h_sub2,''checked'',''on''),',...
'set(h_sub1,''checked'',''off''),',...
]);
六、快捷菜单
快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单。
这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系,又叫现场菜单。
在MATLAB中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立快捷菜单,具体步骤为:
(1)利用uicontextmenu函数建立快捷菜单;
(2)利用uimenu函数为快捷菜单建立菜单项;
(3)利用set函数将该快捷菜单和某图形对象联系起来。
例:
绘制一条Sa曲线,创建一个与之相联系的现场菜单,用以控制Sa曲线的颜色(exam8_8.m)。
t=(-3*pi:
pi/50:
3*pi)+eps;
y=sin(t)./t;
hline=plot(t,y);
cm=uicontextmenu;
uimenu(cm,'label','Red','callback','set(hline,''color'',''r''),')
uimenu(cm,'label','Blue','callback','set(hline,''color'',''b''),')
uimenu(cm,'label','Green','callback','set(hline,''color'',''g''),')
set(hline,'uicontextmenu',cm)
第四节用户控件
一、控件种类
除菜单外,控件是另一种实现用户与计算机交互的主要途径,利用这些控件可以实现有关控制。
这些控件名称如下:
(1)按钮(PushButton)
(2)双位按钮(ToggleButton)
(3)单选按钮(RadioButton)
(4)复选框(CheckBox)
(5)列表框(ListBox)
(6)弹出框(PopupMenu)
(7)编辑框(EditBox)
(8)滑动条(Slider)
(9)静态文本(StaticText)
(10)边框(Frame)
二、控件制作
1、建立控件对象方法
MATLAB提供了用于建立控件对象的函数uicontrol,其调用格式为:
对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)
其中各个属性名及可取的值和前面介绍的uimenu函数相似,但也不尽相同,下面将介绍一些常用的属性。
2、控件对象的属性
MATLAB的10种控件对象使用相同的属性类型,但是这些属性对于不同类型的控件对象,其含义不尽相同。
除Children、Parent、Tag、Type、UserData、Visible等公共属性外,还有一些常用的特殊属性。
3、制作示例
例:
①双位按键、无线电按键、控件区域框示例。
创建一个界面包含4种控件:
静态文本、“无线电”选择开关、双位按键、控件区域框(exam8_9.m)。
clfreset
set(gcf,'menubar','none')
set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]);
set(gcf,'defaultuicontrolunits','normalized')
h_axes=axes('position',[0.05,0.2,0.6,0.6]);
t=0:
pi/50:
2*pi;y=sin(t);plot(t,y);
set(h_axes,'xlim',[0,2*pi]);
set(gcf,'defaultuicontrolhorizontal','left');
htitle=title('正弦曲线');
set(gcf,'defaultuicontrolfontsize',12);
uicontrol('style','frame',...
'position',[0.67,0.55,0.25,0.25]);
uicontrol('style','text',...
'string','正斜体图名:
',...
'position',[0.68,0.77,0.18,0.1],...
'horizontal','left');
hr1=uicontrol(gcf,'style','radio',...
'string','正体',...
'position',[0.7,0.69,0.15,0.08]);
set(hr1,'value',get(hr1,'Max'));
set(hr1,'callback',[...
'set(hr1,''value'',get(hr1,''max'')),',...
'set(hr2,''value'',get(hr2,''min'')),',...
'set(htitle,''fontangle'',''normal''),',...
]);
hr2=uicontrol(gcf,'style','radio',...
'string','斜体',...
'position',[0.7,0.58,0.15,0.08],...
'callback',[...
'set(hr1,''value'',get(hr1,''min'')),',...
'set(hr2,''value'',get(hr2,''max'')),',...
'set(htitle,''fontangle'',''italic'')',...
]);
ht=uicontrol(gcf,'style','toggle',...
'string','Grid',...
'position',[0.67,0.40,0.15,0.12],...
'callback','grid');
②静态文本框、滑动键、检录框示例。
演示“归一化二阶系统单位阶跃响应”的交互界面。
在该界面中,阻尼比可在[0.02,2.02]中连续调节,标志当前阻尼比值;可标志峰值时间和大小;可标志(响应从0到0.95所需的)上升时间。
本例涉及以下主要内容:
(1)静态文本的创建和实时改写;
(2)滑动键的创建;'Max'和'Min'的设置;'Value'的设置和获取;
(3)检录框的创建;'Value'的获取;
(4)受多个控件影响的回调操作(exam8_10.m)。
clfreset
set(gcf,'unit','normalized','position',[0.1,0.2,0.64,0.35]);
set(gcf,'defaultuicontrolunits','normalized');
set(gcf,'defaultuicontrolfontsize',12);
set(gcf,'defaultuicontrolfontname','隶书');
set(gcf,'defaultuicontrolhorizontal','left');
str='归一化二阶系统阶跃响应曲线';
set(gcf,'name',str,'numbertitle','off');
h_axes=axes('position',[0.05,0.2,0.6,0.7]);
set(h_axes,'xlim',[0,15]);
str1='当前阻尼比=';
t=0:
0.1:
10;z=0.5;y=step(1,[12*z1],t);
hline=plot(t,y);
htext=uicontrol(gcf,'style','text',...
'position',[0.67,0.8,0.33,0.1],...
'string',[str1,sprintf('%1.4g\',z)]);
hslider=uicontrol(gcf,'style','slider',...
'position',[0.67,0.65,0.33,0.1],...
'max',2.02,'min',0.02,...
'sliderstep',[0.01,0.05],...
'Value',0.5);
hcheck1=uicontrol(gcf,'style','checkbox',...
'string','最大峰值',...
'position',[0.67,0.50,0.33,0.11]);
vchk1=get(hcheck1,'value');
hcheck2=uicontrol(gcf,'style','checkbox',...
'string','上升时间(0->0.95)',...
'position',[0.67,0.35,0.33,0.11]);
vchk2=get(hcheck2,'value');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八章 MATLAB用户介面设计 第八 MATLAB 用户 介面 设计