matlab实验 6Word格式文档下载.docx
《matlab实验 6Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《matlab实验 6Word格式文档下载.docx(26页珍藏版)》请在冰点文库上搜索。
–与句柄结构共享数据
–M文件中的函数和响应
•控件的使用
•使用句柄结构进行GUI数据操作
三、上机练习
(一)、练习书上的例子
启动GUIDE
启动GUIDE有三种方法:
在MATLAB操作桌面,单击File→New→GUI选项、单击工具栏上的图标、在命令窗口输入guide后回车,出现GUIDEQuickStart对话框。
CreatenewGUI选项卡包含四个初始化设计模板:
BlankGUI(Default)创建一个空白的GUI、1)GUIwithUicontrols创建一个带有控制组件的GUI、GUIwithAxesandMenu创建一个带有轴对象和菜单的GUI、ModelQuestionDialog创建一个问题对话框。
2)OpenExistingGUI选项卡含有一个Recentyopenedfiles(最近打开过的GUI文件)选择框。
选择BlankGUI(Default)模板,单击【OK】按钮,打开GUI设计窗口。
单击设计窗口File→Preferences选项,打开Preferences对话框,选中Shownameincomponentpalette选项,在组件面板中显示控件名称。
设计窗口的右边为版面设计区,向版面设计区添加控件,可以用鼠标从组件面板拖动来完成版面设计完成后,单击工具栏的运行按钮,即可运行GUI。
首次运行GUI时,系统会提示存盘。
存盘完成后,系统会打开运行界面窗口和M文件编辑窗口,同时生成两个文件:
一个是fig文件,包含对GUI及其组件的完整描述;
另一个是M文件,包含GUI的程序代码和组件回调事件代码。
控件介绍:
(1)命令按钮(PushButton)
(2)开关按钮(ToggleButton)
(3)单选按钮(RadioButton)
(4)核选框(CheckBox)
(5)滑动条(Slider)
(6)可编辑文本框(EditText)
(7)静态文本框(StaticText)
(8)弹出式菜单(Pop-UpMenu)
(9)列表框(Listbox)
(10)坐标轴(Axes)
(11)面板(Panel)
(12)按钮组(ButtonGroup)
(13)ActiveX控件(ActiveXControl)
对象属性检查器设置:
利用对象属性检查器,可以查看每个对象的属性值,也可以修改、设置对象的属性值。
选中某个控件,单击GUI设计窗口工具栏上
按钮、单击View→PropertyInspector子菜单,直接双击控件,都可以打开对象属性检查器。
界面制作包括界面设计和程序实现,一般制作步骤如下:
Ø
分析界面所要求实现的主要功能,明确设计任务;
界面设计,确定界面所用部件及其属性;
回调函数设置;
对实现的功能进行逐项调试检查;
对界面部件进行装饰,使其更人性化。
例子练习:
例1:
根据上面的界面制作步骤,制作一个界面,点击不同控件能分别显示sin(x)和tan(x)。
第一步,题意分析
本例子需要有一个坐标轴(Axes);
要三个命令按钮控件分别控制sin(x)和tan(x)显示以及一个停止按钮。
第二步,界面设计
(1)新建一个GUI界面
在MATLAB操作桌面上,单击File→New→GUI选项,选择BlankGUI(Default)模板,单击“OK”按钮,打开GUI设计窗口。
(2)添加控件
用鼠标从GUI设计窗口的组件面板中拖动坐标轴(Axes),3个命令按钮(PushButton)控件。
(3)排列控件
选中两个或两个以上需要排列的控件,单击设计窗口的工具或单击Tools→AlignObjects菜单项,打开排列工具对话框,
(4)设置控件属性
双击需要属性设置的控件,打开对象属性检查器,设置控件属性。
“y=sin(x)”按钮:
String属性修改为y=sin(x),FontUnits属性改为normalized,FontWeight属性改为bold,FontSize属性改为0.3,其他为默认值。
“y=tan(x)”编辑文本:
String属性修改为y=tan(x),其他属性同上。
“STOP”按钮:
String属性修改为“stop”,Tag属性修改为“stop”,其他同上。
控件设置效果如图所示:
第三步,回调函数设置
在“求零极点”按钮上点击右键,下拉菜单选择ViewCallBacks→CallBack(回调函数),
在函数functionsinx_Callback(hObject,eventdata,handles)后面添加如下程序:
x=0:
0.01:
2*pi;
y=sin(x);
plot(x,y)
title('
y=sin(x)'
);
xlabel('
坐标x'
ylabel('
坐标y'
在函数functiontanx_Callback(hObject,eventdata,handles)后面添加如下程序:
y=tan(x);
y=tan(x)'
在函数functionstop_Callback(hObject,eventdata,handles)后面添加如下程序:
close
第四步,逐项调试检测
单击工具栏的运行按钮,按照提示保存后,运行并验证程序功能。
第五步,装饰控件
一般情况停止按钮为红色较为习惯,运行按钮为绿色的,所以将STOP控件的PropertyInspercter里的BackgroundColor设置为红色;
将y=sin(x)和y=tan(x)控件的PropertyInspercter里的BackgroundColor设置为绿色的
例2:
设计一个滚动条与一个编辑文本框互相传递并显示0~10间的数字。
1、题意分析
本例需调用一个滚动条(Sliders)、一个动态文本编辑框(EditText)、一个静态文本框(StaticText)、两个命令按钮(PushButton)。
2、控件分析
“滚动条”控件(Sliders)的响应:
在图形界面中添加该控件之后,设置它的属性最大值max和最小值min,其值将在max和min之间变化。
要获取“滚动条”控件的当前值及范围,
“文本框”控件(EditText)的响应:
在图形界面中添加该控件之后,该控件的属性相当于其他语言设计中的文本框属性,允许用户动态地编辑或是输入文本字符串。
3、界面设计
用鼠标从GUI设计窗口的组件面板中拖动滚动条(Slider),一个静态文本(StaticText)一个编辑文本(EditText),3个命令按钮(PushButton)控件。
选中两个或两个以上的需要排列的控件,使用几何位置排列工具,排列图标。
滚动条:
BackgroundColor属性修改为深蓝色,Max属性修改为10,Max属性修改为0,其他为默认值。
编辑文本:
String属性修改为“数字显示栏”,FontUnits属性改为normalized,FontWeight属性改为bold,FontSize属性改为0.3。
其他为默认值。
String属性修改为“显示”,其他属性同上。
“初始化值”按钮:
String属性修改为“初始化值”,Tag属性修改为“run”,BackgroundColor属性修改为绿色,FontUnits属性改为normalized,FontWeight属性改为bold,FontSize属性改为0.3。
“stop”按钮:
String属性修改为“stop”,Tag属性修改为“stop”,BackgroundColor属性修改为红色,其他同上。
程序界面控件布置如图
4、回调函数设置
各控件的回调函数Callback为对象被选中时执行的函数。
在“初始化值”按钮上点击右键,下拉菜单选择ViewCallBacks→CallBack(回调函数),
在函数functionrun_Callback(hObject,eventdata,handles)后面添加如下程序:
set(handles.edit1,'
String'
num2str(get(handles.slider1,'
Value'
)));
在滚动条上点击右键,下拉菜单选择ViewCallBacks→CallBack(回调函数),
在函数functionslider1_Callback(hObject,eventdata,handles)后面添加如下程序:
)))
在编辑文本上点击右键,下拉菜单选择ViewCallBacks→CallBack(回调函数),
在函数functionedit1_Callback(hObject,eventdata,handles)后面添加如下程序:
val=str2double(get(handles.edit1,'
));
ifisnumeric(val)&
length(val)==1&
val>
=get(handles.slider1,'
Min'
)&
val<
Max'
)
set(handles.slider1,'
val);
else
set(handles.edit1,'
'
nonumber'
)
end
在“stop”按钮上点击右键,下拉菜单选择ViewCallBacks→CallBack(回调函数),
在函数functionstop_Callback(hObject,eventdata,handles)后面添加如下程序:
5、保存并运行GUI
拨动滚动条,编辑文本内显示滚轮的当前数值;
在编辑文本里输入0~10任意一数字,滚动条的滚轮将移到该数字的位置。
如果在编辑文本内输入的数字不在0~10之间,编辑文本将提示“nonumber”;
任何时刻单击“初始化值”按钮,滚动条和编辑文本都归零。
运行结果如图所示。
一、图形对象句柄函数
1.图形对象句柄函数
函数名称
说明
gcf
获得当前图形窗口的句柄
gcbf
获得当前正在调用的图形的句柄
gca
获得当前坐标轴的句柄
gco
获得当前对象的句柄
gcbo
获得当前正在调用的对象的句柄
函数格式
delete
delete(h)
删除句柄所对应的图形对象。
h为对象句柄
close(h)
关闭句柄所对应的图形对象。
findobj
h=findobj(‘ProperName’,‘P’)
查找具有某种属性的图形对象句柄。
ProperName为对象的某一个属性(通常使用tag),P为该属性的属性值,h为得到的句柄
get
PropertyValue=get(handle,‘Name’)
获取指定图形对象某个指定属性的属性值。
其中handle为图形对象的句柄、Name为某个属性名称、PropertyValue为返回的属性值
set
set(handle)
显示指定图形对象所有可设置的属性名称及其可能取值。
handle为图形对象的句柄
P=set(handle,‘ProperName’)
显示指定图形对象某个属性的取值。
handle为图形对象的句柄,ProperName为属性,P为返回的属性值
set(handle,‘Name1’,Value1,‘Name2’,
Value2,‘Name3’,Value3,...)
设置指定图形对象的某个属性。
handle为图形对象的句柄,Name1为某个属性,Value1为设置的属性值,其他参数相同
图形对象属性:
1.属性名与属性值
MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值称为属性值。
例如:
LineStyle是曲线对象的一个属性名,决定线形,可以是-、:
、-.、--等。
注:
属性名的写法不区分大小写。
此外,属性名要用单撇号括起来。
2.属性的操作
①set函数重设对象属性,调用格式为:
set(句柄,属性名1,属性值1,属性名2,属性值2,…)
其中句柄用于指明要操作的图形对象。
如果在调用set函数时省略全部属性名和属性值,则将显示出句柄所有的允许属性。
②get函数获取属性值,调用格式为:
V=get(句柄,属性名)其中V是返回的属性值。
如果在调用get函数时省略属性名,则将返回句柄所有的属性值。
例如,绘制正弦曲线,
x=0:
pi/10:
h=plot(x,sin(x));
set(h,'
Color'
'
r'
LineStyle'
:
'
Marker'
p'
col=get(h,'
图形窗口对象
建立图形窗口对象使用figure函数,其调用格式为:
句柄变量=figure(属性名1,属性值1,属性名2,属性值2,…)
MATLAB通过对属性的操作来改变图形窗口的形式。
也可以使用figure函数按MATLAB缺省的属性值建立图形窗口:
figure或句柄变量=figure
要关闭图形窗口,使用close函数,其调用格式为:
close(窗口句柄)
另外,closeall命令可以关闭所有的图形窗口,clf命令则是清除当前图形窗口的内容,但不关闭窗口。
例3:
建立一个图形窗口。
该图形窗口没有菜单条,标题名称为“我的图形窗口”,起始于屏幕左下角、宽度和高度分别为300像素点和150像素点,背景颜色为绿色,且当用户从键盘按下任意一个键时,将显示“Hello,KebordKeyPressed.”字样。
命令如下:
hf=figure('
[0,1,0],'
Position'
[1,1,300,150],...
Name'
图形窗口示例'
NumberTitle'
off'
MenuBar'
none'
...
KeyPressFcn'
disp('
Hello,KeyboardKeyPressed.'
)'
菜单:
MATLAB可以创建两种菜单:
下拉式菜单和上下文(即弹出式)菜单。
在GUIDE窗口中,单击Tools→MenuEditor…选项、或者单击工具栏中的菜单编辑器图标
。
在打开的菜单编辑器中,单击
新菜单图标,选中Untitled1菜单项。
MenuBar选项卡
(1)Label:
显示菜单项的标识字符串,在标识字符串中的某字母前加&字符则定义一个快捷键,由〈Alt〉键+该字符来激活。
(2)Tag:
菜单项的标识项。
(3)Accelerator:
定义菜单项的热键,与〈Ctrl〉键组合使用。
(4)Separatorabovethisitem:
在当前菜单项前是否显示一个分隔符,默认是不显示。
(5)Checkmarkthisitem:
在当前菜单项前是否显示校验标记,默认是不显示。
(6)Enablethisitem:
设置菜单项使能状态,默认是使能。
(7)Callback:
设置菜单回调函数。
(8)Moreoptions:
设置菜单属性。
单击该按钮,可打开菜单的属性设置对话框。
ContextMenus选项卡用于创建上下文(弹出式)菜单,多数是用鼠标右键单击某个图形对象时,在屏幕上弹出的菜单。
这种菜单出现的位置是不固定的,而且总是和某个图形对象的UIContextMenu属性相联系。
先创建上下文菜单,再将图形对象的UIContextMenu属性设置为菜单的标记。
另外,用户可以使用或保留图形窗口标准菜单。
在GUI设计窗口编辑区的空白处双击鼠标(不要选择任何控件),打开图形窗口的属性列表,设置MenuBar属性为figure即可。
例4:
现将例1里的按钮y=sin(x)和按钮y=cos(x)合并到Run按钮,通过Run按钮的上下文菜单来选择y=sin(x)和y=cos(x)。
跟我练:
题意分析
将按钮y=cos(x)删除,将按钮y=sin(x)改做Run按钮,同时在Run按钮链接一个上下文菜单来实现原来的按钮y=sin(x)和按钮y=cos(x)的绘图功能。
创建菜单
打开菜单编辑器MenuEditor→上下文菜单ContextMenus→点击Untitled_1→将UIContextMenuProperty里的Tag修改为tu→点击UIContextMenu里的Callback的View→编辑M文件,添加如下程序内容:
[x,map]=imread('
flower.jpg'
imshow(x)
点击菜单编辑器MenuEditor的NewMenuItem,→添加菜单子项sin(x)→将UIContextMenuProperty里的属性Label修改为sin(x)→属性Tag修改为sin(x)→点击Callback后的View→编辑M文件,添加如下程序内容:
在默认情况显示y=sin(x)曲线。
点击菜单编辑器MenuEditor的NewMenuItem,→添加菜单子项cos(x)→将UIContextMenuProperty里的属性Label修改为cos(x)→属性Tag修改为cos(x)→点击Callback后的View→编辑M文件,添加如下程序内容:
y=cos(x);
y=cos(x)'
界面设计
把例1的GUI设计窗口里y=cos(x)按钮删除。
打开y=sin(x)按钮的属性编辑器PropertyInspercter,将其String属性改为Run;
属性UIContextMenu的属性值改为tu,其他不变。
回调函数设置
在控件Run上单击右键→ViewCallbacks,在函数functionrun_Callback(hObject,eventdata,handles)后面添加如下程序:
[x,map]=imread('
这样当用户点击Run控件时,界面就会默认地显示一张图片
保存并运行GUI
单击工具栏的运行按钮,按照提示保存后,运行并验证程序功能。
继续在例4中添加一个菜单,改变背景颜色,若不合适就返回原来的颜色
打开菜单编辑器MenuEditor→菜单MenuBar→点击Untitled_1→将UIMenuProperty里的Tag修改为color0
点击菜单编辑器MenuEditor的NewMenuItem,→添加菜单子项rr→将UIMenuProperty里的属性Label修改为rr→属性Tag修改为rr→点击Callback后的View→编辑M文件,functionrr_Callback(hObject,eventdata,handles)
添加如下程序内容:
set(gcf,'
color'
点击菜单编辑器MenuEditor的NewMenuItem,→添加菜单子项g1→将UIMenuProperty里的属性Label修改为g1→属性Tag修改为g1→点击Callback后的View→编辑M文件,functiong1_Callback(hObject,eventdata,handles)
‘g'
点击菜单编辑器MenuEditor的NewMenuItem,→添加菜单子项re→将UIMenuProperty里的属性Label修改为re→属性Tag修改为rr→点击Callback后的View→编辑M文件,functionkt8_1_OpeningFcn(hObject,eventdata,handles,varargin)添加如下程序内容:
xx=get(gcf,'
handles.xx=xx;
在functionre_Callback(hObject,eventdata,handles)添加如下程序内容:
xx=handles.xx;
set(gcf,'
xx)
函数功能
打开文件
fname=uigetfile
列出当前目录下MATLAB能识别的所有文件,fname为返回选定的文件名
uigetfile(‘FilterSpec’,‘DTitle’)
列出当前目录下由参数FilterSpec指定类型的文件,DTitle为打开对话框的标题
保存文件
[F,P]=uiputfile(‘InitFile’,‘DTitle’)
显示用于保存文件的对话框,InitFile为保存类型,DTitle为对话框的标题。
F为返回的文件名,P为文件路径。
F,P可缺省
颜色设置
uisetcolor(h,‘DTitle’)
设置图形对象的颜色。
h为图形对象句柄,DTitle为打开的颜色对话框标题
字体设置
uisetfont(h,‘DTitle’)
设置文本字符串、坐标轴或控件的字