专题八图形窗口与坐标轴

图形窗口与坐标轴

文章目录

  • 图形窗口与坐标轴
  • 一、图形窗口与坐标轴
    • 1、图形对象句柄
    • 2、图形对象属性
    • 3、图形窗口的操作
    • 4、坐标轴对象的操作
  • 二、曲线与曲面对象
    • 1、曲线对像
    • 2、曲面对象
    • 3、光照处理
    • 4、图形对象的反射特性
  • 三、图形用户界面设计方法
    • 1、图形用户界面的组成
    • 2、控件对象及其操作
    • 3、菜单对象
  • 四、用户界面设计工具
    • 1、图形界面设计窗口
    • 2、图形用户界面设计工具
    • 3、回调属性与回调函数
  • 五、APP设计工具
    • 1、App Designer的使用
    • 2、App组件
  • 3、App程序
  • 六、图形用户界面应用举例
    • 1、例1
    • 2、例2
  • 总结


一、图形窗口与坐标轴

1、图形对象句柄

(1)句柄概念
在MATLAB中,每一个具体的图形都是有若干个不同的图形对象组成的,用句柄来标识对象,通过句柄来访问相应对象的属性。
例子:绘制多个图形,并保持图形句柄

t=0:pi/10:2*pi;
h1=plot3(t+pi,t-2*pi,sin(t),'r');
hold on
[x,y]=meshgrid(t);
z=sin(x);
h2=mesh(t-2*pi,t+pi,z);
[x3,y3,z3]=cylinder(t);
h3=surf(x3,y3,z3);

专题八图形窗口与坐标轴_第1张图片
(2)访问图形对象
访问图形对象是指获取或设置图形对象的属性。不同图形对象具有的属性不同,但访问方法一样。
对象句柄.属性名
例子:
专题八图形窗口与坐标轴_第2张图片
专题八图形窗口与坐标轴_第3张图片
(3)获取特定图形对象句柄的函数

  • gcf:获取当前窗口的句柄。
  • gca:获取当前坐标区的句柄。
  • gco:获取最近被选中的图形对象的句柄。
  • findobj:按照指定的属性来获取图形对象的句柄。
    专题八图形窗口与坐标轴_第4张图片

2、图形对象属性

(1)图形对象的常用公共属性

  • Children属性:该对象的所有子对象的句柄组成的一个向量。专题八图形窗口与坐标轴_第5张图片
  • Parent属性:该对象的父对象的句柄。
  • Type属性:对象的类型,这是一个只读属性。
  • Tag属性:用于给对象定义一个标识符。

例子:分别在两个子图中绘制曲线和曲面。然后设置子图1的背景颜色为黄色,曲线线条颜色为红色。设置子图2背景色为青色。

subplot(1,2,1)
h1=fplot(@(t)t.*sin(t),@(t)t.*cos(t),[0,6*pi]);
axis equal
subplot(1,2,2)
[x,y,z]=peaks(20);
h2=mesh(x,y,z);
h10=h1.Parent;
h10.Color='y';
h1.Color='r';
h2.Parent.Color='cyan';

专题八图形窗口与坐标轴_第6张图片
专题八图形窗口与坐标轴_第7张图片
(2)图形对象的常用动态属性

  • KeyPressFcn属性:定义按下键盘按键事件的响应。
  • CreateFcn属性:定义创建图形对象时做出的响应。
  • DeleteFcn属性:定义取消图形对象时做出的响应。
  • WindowButtonDownFcn或ButtonDownFcn属性:定义鼠标键按下事件的响应。

3、图形窗口的操作

(1)建立图形窗口对象
MATLAB通过figure函数来创建窗口对象,格式如下:

  • 句柄变量=figure(属性1,属性值1,属性2,属性值2,……)
    其中属性用于设置图形窗口的特征。
  • 句柄变量=figure
    按MATLAB默认的属性值建立图形窗口。
  • figure(窗口句柄)
    设定该句柄对应得窗口为当前窗口。
    (2)图形窗口属性
  • MenuBar属性:控制图形窗口是否具有菜单条,其取值为’none’或’figure’。
  • Name属性:指定图形窗口得标题。
  • NumberTitle属性:决定在图形窗口的标题是否以‘Figure n:’为标题前缀。
  • Color属性:设定图形窗口背景得颜色。
  • Position属性:定义图形窗口对象在屏幕上的位置和大小,值是一个4元行向量:[x,y,w,h]
  • Units属性:定义图形窗口使用的度量单位,将影响一切定义大小的属性项。
    – ‘pixels’:指定度量单位为像素(默认值)。
    – ‘inches’:指定度量单位为英寸。
    – ‘centimeters’:指定度量单位为厘米。
    –‘points’:指定度量单位为磅。
    – ‘normalized’:指定用相对单位。

例子:建立一个图形窗口。该图形窗口没有菜单条,标题名为“图形窗口示例”,起始于屏幕左下角、宽度和高度分别为300像素点和150像素点,背景颜色为青色,且当用户从键盘按下任意一个键时,然后在窗口中单击鼠标左键,在鼠标指针所在位置将显示“Hello ,World!”

hf=figure;%按MATLAB默认的属性值建立图形窗口
hf.Color=[0,1,1];%窗口背景颜色为青色
hf.Position=[1,1,300,150];%指定图形窗口位置
hf.Name='图形窗口示例';%指定图形窗口的名称
hf.NumberTitle='off';%图形窗口的标题不以‘Figure n:’为标题前缀
hf.MenuBar='none';%图形窗口不具有菜单条
hf.ButtonDownFcn='gtext("Hello World!")';%定义鼠标键按下事件的响应

专题八图形窗口与坐标轴_第8张图片

4、坐标轴对象的操作

(1)建立坐标轴对象
使用axes函数,格式如下:

  • 句柄变量=axes(属性1,属性值1,属性2,属性值2,……),其中属性用于设置坐标轴的外观和行为。
  • 句柄变量=axes,按MATLAB默认的属性值在当前图形窗口创建坐标轴。
  • axes(坐标轴句柄),设定该句柄代表的坐标轴为当前的坐标轴。

(2)坐标轴对象的属性

  • Position属性:定义坐标轴在图形窗口中的位置和大小。
  • Units属性:定义坐标轴使用的度量单位,默认是‘normalized’。
  • Box属性:决定坐标轴是否带有边框,可取值是‘on’或者‘off’。‘off’是默认值。
  • GridLineStyle属性:用于定义网格线的类型,可取值是‘:’(默认值)、‘-’、‘-.’、‘–’、‘none’。
  • Title属性:用于对坐标轴标题对象进行操作,取值是通过title函数建立的标题对象的句柄。
  • XLabel、YLabel、Zlabel数学:取值分别是通过xlabel、ylabel、zlabel函数建立的标签对象的句柄。
  • XLim、YLim、ZLim属性:分别定义各坐标轴的下限和上限,取值是2元向量[Lmin,Lmax],默认值是[0,1]。
  • XScale、YScale、ZScale属性:定义各坐标轴的刻度类型。可取值是‘linear’、‘log’。
  • View属性:定义视点,取值是2元向量[az,el],az定义方位角,el定义仰角。坐标轴默认方位角是0°,仰角是90°。

例子:利用坐标轴对象实现图形窗口的分割。

ha=axes('Position',[0.1,0.1,0.7,0.7]);%创建坐标轴,原点位于窗口0.1宽和0.7高交点处,坐标轴宽度和高度均为窗口的0.7
contour(peaks(20))%等高线
ha.Title=title('等高线');
ha.YLabel=ylabel('南北向');
ha.XLabel=xlabel('东西向');
hb=axes('Position',[0.65,0.7,0.28,0.28]);
surf(peaks);
hb.View=[-30,45];

专题八图形窗口与坐标轴_第9张图片

  • ColorOrder属性:用于设置多条曲线的颜色顺序,是一个n*3矩阵,每行用RGB三元组表示一种颜色,默认n为7.
    例子:定义包含4种颜色的ColorOrder属性,绘制6条曲线。
x=[0,0];y=[0,1];
ha=axes;
ha.ColorOrder=[0,0,0;1,0,0;0,1,0;0,0,1];%定义四种颜色
hold on
plot(x,y,x+0.5,y,x+1,y,x+1.5,y,x+2,y,x+2.5,y);
ha.XLim=[-0.2,3];
ha.YLim=[-0.2,1.2];

专题八图形窗口与坐标轴_第10张图片

二、曲线与曲面对象

1、曲线对像

(1)建立曲线对象
line函数的调用格式:
句柄变量=line(x,y,z,属性1,属性值1,属性2,属性值2,……)
其中,x,y,z存储数据点的坐标,与plot、plot3函数含义相同。
(2)曲线对象常用属性

  • Color属性:定义曲线的颜色,默认值为[0 0 0]。
  • LineStyle属性:定义线型,默认为’-’。
  • LineWidth属性:定义线宽,默认值为0.5磅。
  • Marker属性:定义数据点标记符号,默认值为’none’。
  • MarkerSize属性:定义数据点标记符号的大小,默认值为6磅。
  • XData、YData、ZData属性:用于设置3个坐标轴的数据源。

例子:利用曲线对象绘制五环图案

t=-0.1:0.1:2*pi;
x=cos(t);y=sin(t);
line(x,y,'Color','b')
line(x+1.2,y-1,'Color','y')
line(x+2.4,y,'Color','k')
line(x+3.6,y-1,'Color','g')
line(x+4.8,y,'Color','r')
ha=gca;%获取当前坐标区的属性
for n=1:size(ha.Children)%将子对象(即所有线条)的线宽设置为5磅
    ha.Children(n).LineWidth=5;
end
ha.XLim=[-2,7];
ha.YLim=[-3,2];

专题八图形窗口与坐标轴_第11张图片

2、曲面对象

(1)建立曲面对象
使用surface函数,调用格式为:
句柄变量=surface(x,y,z,c,属性1,属性值1,属性2,属性值2,……)
其中,x,y,z存储数据点的坐标,与mesh、surf函数含义相同;c用于指定在不同高度下的曲面颜色。
surf函数每调用一次,就会刷新坐标轴,清空原有图形,在绘制新的图形。而surface函数生成的曲面则在已有图形上叠加显示。
利用surface函数建立的曲面对象,默认视点在图形正上方,即方位角为0°,仰角为90°。
(2)与曲面形态有关的属性

  • FaceColor属性:定义曲面网格片的颜色,可取值:
    – ‘flat’:每一个网格片用单一颜色填充。
    – ‘interp’:用渐变方式填充网格片。
    – ‘none’:网格片无颜色。
    – ‘texturemap’:用Cdata属性定义的颜色填充网格片。
    – RGB向量或代表颜色的字符
  • EdgeColor属性:定义曲面网格线的颜色。

例子:利用曲面对象绘制立体圆环,圆环方程为:
{ x = ( 8 + 3 c o s v ) c o s u y = ( 8 + 3 c o s v ) s i n u z = 3 s i n v , u ∈ [ 0 , 2 π ] , v ∈ [ 0 , 2 π ] \left\{ \begin{aligned} x=(8+3cosv)cosu\\ y=(8+3cosv)sinu\\ z=3sinv \end{aligned} \right.,u∈[0,2\pi],v∈[0,2\pi] x=(8+3cosv)cosuy=(8+3cosv)sinuz=3sinvu[0,2π]v[0,2π]

r=linspace(0,2*pi,100);
[u,v]=meshgrid(r);
x=(8+3*cos(v)).*cos(u);
y=(8+3*cos(v)).*sin(u);
z=3*sin(v);
axes('view',[-37.5,30]);
hs=surface(x,y,z);
axis equal;
hs.EdgeColor='none';
hs.FaceColor='interp';

专题八图形窗口与坐标轴_第12张图片

3、光照处理

(1)创建光源对象
light函数的调用格式:
对象句柄=light(属性1,属性值1,属性2,属性值2,……),其中属性指定光源的特性。
(2)光源对象的属性

  • Color属性:设置光的颜色。
  • Style属性:设置光源类型,其取值为‘infinite’(默认值)或‘local’。
  • Position属性:指定光源位置,值是一个3元向量。

(3)设置光照模式
利用lighting命令可以设置光照模式,格式如下:
lighting 选项
其中,选项可取值:

  • flat:使得入射光均匀洒落在图形对象的每个面上(默认值)。
  • gouraud:先对顶点颜色插补,再对顶点勾画的面上颜色进行插补。
  • phong:对顶点处的法线插值,再计算各个像素的反光。
  • none:关闭所有光源。

例子:绘制光照处理后的圆环面并观察不同光照模式下的效果。

r=linspace(0,2*pi,100);[u,v]=meshgrid(r);
x=(8+3*cos(v)).*cos(u);y=(8+3*cos(v)).*sin(u);z=3*sin(v);
axes('Position',[0.05,0.675,1.0,0.3],'view',[-37.5,30]);
hs1=surface(x,y,z);axis equal;
hs1.EdgeColor='none';hs1.FaceColor='interp';
axes('Position',[0.05,0.35,1.0,0.3],'view',[-37.5,30]);
hs2=surface(x,y,z);axis equal;
hs2.EdgeColor='none';hs2.FaceColor='interp';
light('Position',[0,0,8])%入射光源[0,0,8]
lighting flat%均匀洒落
axes('Position',[0.05,0.025,1.0,0.3],'view',[-37.5,30]);
hs2=surface(x,y,z);axis equal;
hs2.EdgeColor='none';hs2.FaceColor='interp';
light('Position',[0,0,8])%入射光源[0,0,8]
lighting phong%顶点插值处理

专题八图形窗口与坐标轴_第13张图片

4、图形对象的反射特性

  • SpecularStrength属性:控制对象表面镜面反射的强度,属性值取0~1之间的数,默认为0.9。
  • DiffuseStrength属性:控制对象表面漫反射的强度,属性值取0~1之间的数,默认为0.6。
  • AmbientStrength属性:确定环境光的强度,属性值取0~1之间的数,默认为0.3。
  • SpecularExponent属性:控制光的强度,属性值取0~1之间的数,默认为0.3。
  • BackFaceLighting属性:控制对象内表面和外表面的差别,取值为:
    – ‘unlit’
    – ‘lit’
    –‘reverselit’(默认值)

三、图形用户界面设计方法

1、图形用户界面的组成

(1)图形用户界面GUI(Graphical User Interface):用户与计算机进行信息交流的窗口。
(2)设计图形用户界面的方法

  • 调用建立用户界面控件的函数
  • 使用MATLAB提供的GUIDE工具进行可视化设计

2、控件对象及其操作

(1)常用控件

  • 输入和输出类控件:编辑框、静态文本、列表框、滑动条等。
  • 实施确认、选择操作类控件:按钮、双位按钮、单选按钮、复选框。

(2)建立控件对象
句柄变量=uicontrol(图形窗口句柄,属性1,属性值1,属性2,属性值2,……)
其中,属性及其取值决定了控件的特征。若省略图形窗口句柄,默认在当前图形窗口建立控件对象。

(3)控件对象的基本控制属性

  • Style属性:定义控件对象的类型,例如‘pushbutton’表示按钮对象,‘edit’表示编辑框。
  • String属性:定义控件对象的说明文字。
  • Tag属性:标识控件对象。
  • Enable属性:控制控件对象是否可用。
  • Position属性:定义控件对象的位置,其取值形式为[x,y,w,h]。
  • Callback属性:其属性值是描述命令的字符串或函数句柄,当选中控件时,系统将自动执行字符串描述的命令或调用句柄所代表的函数,实施相关操作。

例子:在图形窗口建立三个按钮对象,当单机按钮时分别绘制正弦曲线、显示或隐藏坐标轴的网络、清楚坐标轴的图形。

ha=axes('Units','pixels','Position',[40,40,360,360]);
btgrid=uicontrol('Style','pushbutton','String','网格',...
    'Position',[450,120,48,20],...
    'Callback','grid');%grid显示或隐藏坐标轴的网络
btncla=uicontrol('Style','pushbutton','String','清除',...
    'Position',[450,80,48,20],...
    'Callback','cla');%cla清除坐标轴
btplot=uicontrol('Style','pushbutton','String','绘图',...
    'Position',[450,160,48,20]);
btplot.Callback=@plot_sin;%绘图

建立回调绘图函数文件plot_sin.m

function plot_sin(source,callbackdata)
t=-pi:pi/20:pi;
plot(t,sin(t));
end

专题八图形窗口与坐标轴_第14张图片
注:回调函数定义格式
function 函数名(source,evendata)
……
end
其中,参数source是发生事件的源控件对象句柄,evendata存储事件数据。

3、菜单对象

(1)建立菜单对象
uimenu函数用于创建、设置、修改菜单

  • 建立一级菜单项的函数调用格式
    一级菜单项句柄=uimenu(图形窗口句柄,属性,属性值1,属性2,属性值2,……)
  • 建立子菜单项的函数调用格式:
    子菜单项句柄=uimenu(上级菜单项句柄,属性,属性值1,属性2,属性值2,……)

(2)菜单属性

  • Label属性:定义菜单项的名字。
  • Accelerator属性:定义菜单项的快捷键
  • Checked属性:指示菜单项是否已选中
  • Enable属性:控制菜单项的可选性
  • Separator属性:在菜单项上方添加一条分割线

例子:在上例的界面中添加“图形选项”菜单项,其中包括一个二级菜单项“线型”,其下又有3个子菜单项,分别为“实线”、“虚线”、“双划线”。
主程序

%建立坐标轴
ha=axes('Units','pixels','Position',[40,40,360,360]);
%grid显示或隐藏坐标轴的网络
btgrid=uicontrol('Style','pushbutton','String','网格',...
    'Position',[450,120,48,20],...
    'Callback','grid');
%cla清除坐标轴
btncla=uicontrol('Style','pushbutton','String','清除',...
    'Position',[450,80,48,20],...
    'Callback','cla');
%绘图
btplot=uicontrol('Style','pushbutton','String','绘图',...
    'Position',[450,160,48,20]);
btplot.Callback=@plot_sin;
%一级菜单项
hopt=uimenu(gcf,'Label','图形选项','Accelerator','L');
%建立二级菜单项,包括实线、虚线、双划线
hLStyle=uimenu(hopt,'Label','选项','Tag','LStyle','Enable','off');Enable为off菜单不可用
hL_Solid=uimenu(hLStyle,'Label','实线','Tag','Solid','Callback',@MLine_Type);
hL_Dotted=uimenu(hLStyle,'Label','虚线','Tag','Dotted','Callback',@MLine_Type);
hL_Dashed=uimenu(hLStyle,'Label','双划线','Tag','Dashed','Callback',@MLine_Type);

函数文件plot_sin.m

function plot_sin(source,callbackdata)
t=-pi:pi/20:pi;
plot(t,sin(t));
h1=findobj('Tag','LStyle');
h1.Enable='On';%将Tag属性为LStyle的Enable改为on,使得 “线型”菜单项可用
end

函数文件MLine_Type.m

function MLine_Type(source,callbackdata)
hline=findobj('Type','line');%返回类型为线型的对象
if strcmp(source.Tag,'Solid')==1%strcmp字符比较函数
    hline.LineStyle='-';
elseif strcmp(source.Tag,'Dotted')==1
    hline.LineStyle=':';
elseif strcmp(source.Tag,'Dashed')==1
    hline.LineStyle='--';
end
end

程序运行结果,运行主程序生成图形界面,此时菜单中“图形选项”下的“选项”不可用。单机“绘图”按钮绘制曲线之后,“选项”可用,这时可以改变线型。
专题八图形窗口与坐标轴_第15张图片

四、用户界面设计工具

1、图形界面设计窗口

(1)打开GUIDE

  • 在MATLAB命令行窗口输入guide命令
  • 在MATLAB主窗口中选择“主页”选项卡,单击工具栏的“新建”命令按钮,再选择“应用程序”下的GUIDE命令。

(2)图形用户界面设计模板

  • Blank GUI(Default)
  • GUI with Uicontrols
  • GUI with Axes and Menu
  • Modal Question Dialog
    专题八图形窗口与坐标轴_第16张图片
    (3)图形用户界面设计窗口
    图形用户界面设计窗口由菜单栏、工具栏、组件选项板、界面设计区、状态栏等部分组成。
    专题八图形窗口与坐标轴_第17张图片
    例子:建立一个图形用户界面,该界面包括一个坐标轴,3个静态文本,3个可编辑文本,2个按钮。还有一个按钮组,里面有两个单选按钮。
    专题八图形窗口与坐标轴_第18张图片

2、图形用户界面设计工具

在这里插入图片描述
从左到右依次是:
对齐对象工具、菜单编辑器、Tab键顺序编辑器、工具栏编辑器、代码编辑器、对象属性检查器、对象浏览器。
(1)对象属性检查器
用于检查/修改对象属性的工具
专题八图形窗口与坐标轴_第19张图片
专题八图形窗口与坐标轴_第20张图片
(2)菜单编辑器
专题八图形窗口与坐标轴_第21张图片
(3)对象浏览器
用于查看图形对象和展示界面的组织架构。

3、回调属性与回调函数

(1)回调属性

  • Callback属性:按钮类控件和菜单项的单击事件的默认回调属性。
  • CreateFcn属性:定义创建图形对象的响应。
  • DeleteFcn属性:定义取消图形对象的响应。
  • ButtonFcn属性:定义单击鼠标键按下的响应。
  • KeyPressFcn属性:定义键盘键按下的响应。
  • SelectionChangeFcn属性:定义改变选项的响应。

(2)回调函数框架
function 对象标识_Callback(hObject,eventdata,handles)
,其中,hObject为发生事件的源控件,eventdata为事件数据,handles保存图形界面中所有对象的句柄。

(3)回调函数举例

  • “绘图”按钮的Callback
function pushbutton1_Callback(hObject, eventdata, handles)
A=eval(handles.editfz.String);
f=eval(handles.editpl.String)/50;
theta=eval(handles.editxj.String)/180*pi;
x=linspace(0,2*pi,100);
if handles.Opsin.Value==1%判断是选择sin还是cos函数
    y=A*sin(f*x+theta);
else
    y=A*cos(f*x+theta);
end
plot(x,y);
handles.PStyle.Enable='On';
  • “实线”菜单的回调函数(虚线,双划线类似)
function Soild_Callback(hObject, eventdata, handles)
hline=findobj('Type','line');
hline.LineStyle='-';
handles.Solid.Checked='On';%指示菜单已经选中
handles.Dotted.Checked='Off';
handles.Dashed.Checked='Off';
  • “红色”菜单的回调函数
function r_Callback(hObject, eventdata, handles)
hline=findobj('Type','line');
hline.Color='r';
handles.r.Checked='On';%指示菜单已经选中
handles.g.Checked='Off';
handles.b.Checked='Off';
  • 成果图
    专题八图形窗口与坐标轴_第22张图片

五、APP设计工具

1、App Designer的使用

(1)打开App Designer

  • 在MATLAB命令行窗口输入appdesigner命令。
  • 在MATLAB主窗口选择“主页”选项卡,单击工具栏“新建”,再选择“应用程序”下的“App Designer”。

(2)App Designer窗口
快速访问工具栏,功能区,App编辑器
专题八图形窗口与坐标轴_第23张图片
(3)App编辑器

  • 设计视图:用于编辑用户界面
  • 代码试图:用于编辑、调试、分析代码
    专题八图形窗口与坐标轴_第24张图片

2、App组件

常用组件、容器组件、仪器组件
例1 :建立一个App用户界面,该界面包括1个坐标轴,2个旋钮,2个按钮和1个按钮。
(1)打开App设计器窗口,添加组专题八图形窗口与坐标轴_第25张图片
(2)利用属性面板设置组件对象的属性
专题八图形窗口与坐标轴_第26张图片
(3)定义回调函数

  • 设置回调属性
  • 选择右键快捷菜单中的回调函数
    专题八图形窗口与坐标轴_第27张图片

3、App程序

App程序采用面向对象设计模式,声明对象、定义函数、设置属性和共享数据都封装在一个类中,一个MATLAB文件就是一个类的定于。
(1)类的基本结构

  • properties段:属性的定义,主要包含属性声明代码
  • methods段:方法的定义,由若干函数组成。回调函数只有一个数app,为界面句柄,存储界面中各个成员的数据。
classdef 类名<matlab.apps.AppBase>
	properties (Access=public)
		……
	end
	methods (Access=private)
		function 函数1(app)
			……
		end
		function 函数2(app)
			……
		end
	end

(2)访问权限

  • public:可用于与App的其他类共享数据。
  • private:只允许在本类中访问。以下属性和函数的默认访问权限为private
    – 属性的声明
    – 界面的启动函数startupFcn
    – 建立界面组件的函数createComponents
    – 回调函数

例2:实现例1界面的绘图功能。
(1)绘图按钮的回调函数

function Button_2Pushed(app, event)
            f=eval(app.Knob_3.Value);%获取离散旋钮对象的Value属性值
            theta=app.Knob_2.Value/180*pi;%获取旋钮对象的Value属性值
            x=linspace(0,2*pi,100);
            if app.sinxButton.Value==1
                y=sin(f*x+theta);
            else
                y=cos(f*x+theta);
            end
            %plot的第一个参数必须是坐标轴对象句柄
            %plot函数默认的线宽是1,App程序的线宽必须小于0.4
            plot(app.UIAxes,x,y,'LineWidth',0.2)
        end

(2)清空按钮的回调函数

function Button_3Pushed(app, event)
            cla(app.UIAxes)
        end

(3)运行App
专题八图形窗口与坐标轴_第28张图片
(4)打包App应用
专题八图形窗口与坐标轴_第29张图片
专题八图形窗口与坐标轴_第30张图片

六、图形用户界面应用举例

在今后的版本里,GUIDE将会被删除,目前版本会提示不建议使用。所以,建议使用APP设计工具。

1、例1

专题八图形窗口与坐标轴_第31张图片
(1)添加组件,并设置相应的属性。
专题八图形窗口与坐标轴_第32张图片
(2)编写回调函数代码

  • “选择绘图参数”组件的回调函数
if string(app.ChooseFun.Value)=='Peaks'
   app.ChooseFun.UserData=peaks(34);
elseif string(app.ChooseFun.Value)=='Membrane'
   app.ChooseFun.UserData=membrane;
elseif string(app.ChooseFun.Value)=='Sinc'
    [x,y]=meshgrid(-8:0.3:8);
    r=sqrt(x.^2+y.^2);
    sinc=sin(r)./r;
    app.ChooseFun.UserData=sinc;
end
guidata(app.UIAxes,app.ChooseFun.UserData)%更改数据,并在图窗中再次存储新数据
  • “Mesh”组件的回调函数
mesh(app.UIAxes,app.ChooseFun.UserData);
  • “Surf”组件的回调函数
surf(app.UIAxes,app.ChooseFun.UserData);
  • “Contour3”组件的回调函数
contour3(app.UIAxes,app.ChooseFun.UserData);
  • “显示网格”组件的回调函数
if app.GridsSwitch.Value==1
    app.UIAxes.XGrid='on';
    app.UIAxes.YGrid='on';
    app.UIAxes.ZGrid='on';
    app.GridsSwitch.Text='隐藏网格';
else
    app.UIAxes.XGrid='off';
    app.UIAxes.YGrid='off';
    app.UIAxes.ZGrid='off';
    app.GridsSwitch.Text='显示网格';
end
  • “设置”组件的回调函数
el=app.Edit_el.Value;
az=app.Edit_az.Value;
app.UIAxes.View=[az,el];
  • “色图”组件的回调函数
colormap(app.UIAxes,app.ChooseMap.Value)
  • “着色方式”组件的回调函数
if app.Faceted.Value==1
    shading(app.UIAxes,'faceted');
elseif app.Interpolated.Value==1
    shading(app.UIAxes,'interp');
elseif app.Flat.Value==1
    shading(app.UIAxes,'flat');
end

(3)输出结果
专题八图形窗口与坐标轴_第33张图片

2、例2

专题八图形窗口与坐标轴_第34张图片
(1)添加组件,并设置相应的属性。
专题八图形窗口与坐标轴_第35张图片
(2)编写“开始”按钮的回调函数

            amr=eval(app.Knob.Value);
            theta=app.Knob_2.Value;
            x=linspace(0,10*pi,300);
            y=sin(x)+sin(3*x+theta)/amr;
            if strcmp(app.Switch.Value,'On')
                y=awgn(y,30);
            end
            app.Gauge.Value=max(y);
            plot(app.UIAxes,x,y,'LineWidth',0.1);

(3)运行结果
专题八图形窗口与坐标轴_第36张图片


总结

专题八图形窗口与坐标轴_第37张图片

你可能感兴趣的:(MATLAB语言,matlab)