教程视频链接。
P1 对象的概念
4个函数
get
获取某对象的属性
set
设置某对象的属性
findobj
寻找符合属性要求的对象
allchild
寻找某一对象的子对象
P2 对象操作
h = figure('Units','Normalized',...
'Position',[0.2 0.2 0.5 0.5],...
'Menu','None');
通过使用归一化单位,可无需计算窗口大小,直接设定在窗口中的相对Position。
ha = axes('Parent', h, 'Units', 'Normalized', 'Position', [0.1 0.1 0.8 0.8]);
要画图的话需要先建立坐标系,ha是以h为父对象的坐标系,同时设定其在父对象中的Position。另,前面figure的父对象为整个屏幕。
hl = line('Parent', ha, 'XData', [0:0.01:6], 'YData', sin([0:0.01:6]), 'Color', 'r')
线的父对象为axes,并可设定xy值与颜色。1
2
3
4
5cstring = 'gbkmy';
for k = 1:5
set(hl, 'Color', cstring(k));
pause(3);
end
可以通过set函数改变线条颜色,通过pause设置间隔时间。
P3 底层代码实现GUI
在底层代码实现GUI中,常用的对象有Figure、Axes、Line、Text、Uicontrol等。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33hf = figure(...
'Units', 'Normalized',...
'Menu', 'none',...
'Color', 'w',...
'Position', [0.1 0.1 0.7 0.5]);
ha = axes(...
'Parent', hf,...
'Units', 'Normalized',...
'Position', [0.1 0.1 0.6 0.8],...
'NextPlot', 'Add',...
'Box', 'on');
hb1 = uicontrol(...
'Style', 'pushbutton',...
'Callback', 'try, delete(allchild(ha));end', ...
'String', 'clear', ...
'Units', 'Normalized', ...
'Position', [0.8 0.2 0.2 0.15]);
hb2 = uicontrol(...
'Style', 'pushbutton',...
'Callback', 'plot(sin([0:0.01:10]))', ...
'String', 'sin', ...
'Units', 'Normalized', ...
'Position', [0.8 0.4 0.2 0.15]);
hb3 = uicontrol(...
'Style', 'pushbutton',...
'Callback', 'plot(cos([0:0.01:10]))', ...
'String', 'cos', ...
'Units', 'Normalized', ...
'Position', [0.8 0.8 0.2 0.15]);
在这一P的程序中,主要介绍了各个对象的常见属性设置。
axes中的NextPlot属性类似于hold on命令,保证在绘制新图的时候,原图不会消除。Box属性就是给axes四个方向均添加坐标轴边框。
uicontrol的一个重要属性就是Callback,即回调函数,表明在按下该模块后,将会进行什么操作。
P4 常用对象介绍1
本讲主要讲述Figure和Axes。
Figure1
2hf = figure;
get(hf);
CloseRequestFcn
默认CloseRequestFcn = closereq1hb = uicontrol('Style', 'pushbutton', 'Callback', 'closereq');
添加一个按钮,将它的回调函数设置为closereq,则可以点击这个按钮后关闭窗口。
Color
默认窗口背景颜色为类似于灰色,可通过1set(hf, 'Color', 'w')
将窗口背景颜色换为白色。
CurrentAxes
默认CurrentAxes = []
若是在figure中添加了子对象,则Current指向该子对象。
MenuBar
默认MenuBar=figure,即默认窗口的菜单栏是有figure的菜单栏的,如果不需要的话,可以设置1set(hf,'Menubar','none')
NumberTitle Name
默认窗口名为Figure1,可以通过语句1set(hf, 'NumberTitle', 'off', 'Name', '演示');
将窗口名更换为‘演示’。
ReSize
默认为on,意思是可以改变窗口大小,可通过语句1set(hf, 'ReSize', 'off');
将窗口固定大小,不可改变。
WindowButtonDownFcn
用鼠标在窗口上点击时,将会触发的效果。如1set(hf, 'WindowButtonDownFcn', 'closereq');
则会产生鼠标点击窗口任意位置时,窗口关闭的效果。
WindowKeyPressFcn
与上一个类似,当窗口为当前窗口时,按下任意一个键,将会触发什么效果。1set(hf, 'WindowKeyPressFcn', 'closereq');
WindowStyle
窗口类型,默认normal,即常规窗口,比如可通过1set(hf, 'WindowStyle', 'modal');
将窗口设置为始终在最前的当前窗口,只有关掉这个窗口才能切换其他。
Visible
窗口是否可见。默认为on。可通过1
2
3
4pause(3);
set(hf, 'Visible', 'off');
pause(3);
set(hf, 'Visible', 'on')
使窗口停留三秒后不可见,再停留三秒后可见。该属性可用于比如主窗口引出子窗口,此时可将主窗口设置为不可见,在关闭子窗口后,再将主窗口设置为可见。
Axes1
2ha = axes;
get(axes)
Box、Color、CurrentPoint、Visible都讲过。
GridLineStyle
网格类型
LineWidth
线的宽度
NextPlot
讲过,可选择replace、add等。
XLim YLim
X、Y坐标轴的范围
XLabel YLabel
X、Y坐标轴的名称
XGrid YGrid ZGrid
每个方向的网格是on还是off
P5 常用对象介绍2
这一P主要讲Line对象的使用。
Line1
2
3hf = figure;
hl = plot([0:10]);
get(hl)
Color
可通过’r’等字符的方式或者[0 0 1]这样的rgb值形式使用set进行改变。
LineStyle
选择直线或者点划线或者其他等等
LineWidth
线宽
Marker
默认Marker=none。可通过1set(hl, 'Marker', 'p');
将线上的每一个点用五角星表示。
MarkerSize
Marker的大小
MarkerEdgeColor
Marker外轮廓线的颜色,默认auto,随线的颜色改变
MarkerFaceColor
Marker填充颜色,默认none,即不填充
XData YData1
2
3hl1 = ezplot('sin(x)');
x = get(hl1,'XData');
y = get(hl1,'YData');
通过ezplot绘制曲线后,可通过get该曲线的XData和YData获取xy值。
P6 常用对象介绍3
这一P主要讲Text、uicontrol对象的使用。
Text
text对象是axes对象的子对象。1
2
3hf = axes;
ht = text(1, 1, '示例');
get(ht)
在位置为[1,1]的地方生成text对象。
Color
字体颜色
BackgroundColor
背景颜色,默认none
Editing
是否可以编辑,默认off
FontAnle
字体倾斜角
FontName
字体类型
FontSize
字体大小
FontUnits
字体单位
FontWeight
字体是否加粗
HorizontalAlignment
字体对齐方式 选择left center right等
Position
位置
Rotation
旋转角度
String
最多用到,字体实际显示内容
Interpreter
用于显示公式等,默认tex,可改为latex等其他类型。
VerticalAlignment
垂直对齐方式,默认middle,可改为top、bottom等。
uicontrol
uicontrol包括pushbutton、edittext、uitable等多种类型,其主要属性为Callback,即回调函数。
Callback
回调函数主要分成如下几步完成
首先写出原始语句1plot(x)
在原始语句基础上加上单引号1'plot(x);'
当原始语句中含有引号时,将原单引号改为两个单引号,并在最外层加一对单引号1'plot(x,y,''r'');'
另外函数内容较多时,也可以使用另外单独的函数作为回调函数。
P7 常用对话框1
本P主要讲解文件打开对话框和文件保存对话框。
uigetfile
uigetfile为文件打开对话框
直接打开
直接调用uigetfile的话,默认打开当前目录,文件类型为matlab文件类型,包括.m、.mat等等。
规定打开文件类型1uigetfile('*.m');
输出参数意义1[a, b, c] = uigetfile('*.txt');
其中,a为文件名,b为文件目录,c为是否选择确定,若点击确定则c为1,若点击取消则c为0,避免实际操作时点击取消,后续程序无法获取读取的内容。1load(fullfile(b,a));
读取文件。此时若按下取消则会报错。因此可修改为1
2
3if c==1
load(fullfile(b,a));
end
uiputfile
uiputfile为文件保存对话框,其参数类型与uigetfile类似。1[a, b, c] = uiputfile('*.m')
P8 常用对话框2
本P主要讲解颜色设置对话框和字体设置对话框。
uisetcolor
uisetcolor弹出窗口,选择具体颜色
设置默认颜色
可以设置默认rgb值1c = uisetcolor(1 0 0]);
也可以通过改变对象颜色1
2h = plot([0:10]);
c = uisetcolor(h);
此时plot的颜色也会根据选择的颜色进行改变。
结合uicontrol1
2figure;
b = uicontrol('Parent', gcf, 'String', '颜色设置', 'Style', 'pushbutton', 'Callback', 'c = uisetcolor; set(b, ''BackgroundColor'', c);');
uisetfont
uisetfont弹出窗口,选择字体类型,大小,是否加粗等。其调用语法和uisetcolor相似。如1
2S = uisetfont(b);
b = uicontrol('Parent', gcf, 'String', '颜色设置', 'Style', 'pushbutton', 'Callback', 'uisetfont(b);', 'Position', [0.2 0.2 0.8 0.8], 'Units', 'Normalized');
P9 常用对话框3
本P讲述进度条的使用。
P10 常用对话框4
本P讲述普通对话框、错误对话框、警告对话框。
dialog
dialog为普通空白对话框,但限定其为当前对话框,只有在其上面任意位置点击后关闭该对话框才可以操作其他。
可以通过dialog自定义对话框。1
2h = dialog('name', '关于...', 'Position', [200 200 200 70]);
uicontrol('parent', h, 'style', 'pushbutton', 'Position', [80 10 50 20], 'String', '确定', 'Callback', 'delete(gcbf)');
建立对话框,其子对象button回调函数为关闭该对话框。
errordlg
errordlg为错误对话框。
warndlg
warndlg为警告对话框。
P11 常用对话框5
本P讲述输入对话框、列表选择对话框、目录对话框。
P12 GUIDE
P13 GUI数据管理
P14 GUI编程实例