图形窗口与坐标轴
文章目录
一、图形窗口与坐标轴
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);
(2)访问图形对象
访问图形对象是指获取或设置图形对象的属性。不同图形对象具有的属性不同,但访问方法一样。
对象句柄.属性名
例子:
(3)获取特定图形对象句柄的函数
- gcf:获取当前窗口的句柄。
- gca:获取当前坐标区的句柄。
- gco:获取最近被选中的图形对象的句柄。
- findobj:按照指定的属性来获取图形对象的句柄。
2、图形对象属性
(1)图形对象的常用公共属性
- Children属性:该对象的所有子对象的句柄组成的一个向量。
- 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';
(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!")';%定义鼠标键按下事件的响应
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];
- 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];
二、曲线与曲面对象
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];
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=3sinv,u∈[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';
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%顶点插值处理
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
注:回调函数定义格式
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
程序运行结果,运行主程序生成图形界面,此时菜单中“图形选项”下的“选项”不可用。单机“绘图”按钮绘制曲线之后,“选项”可用,这时可以改变线型。
四、用户界面设计工具
1、图形界面设计窗口
(1)打开GUIDE
- 在MATLAB命令行窗口输入guide命令
- 在MATLAB主窗口中选择“主页”选项卡,单击工具栏的“新建”命令按钮,再选择“应用程序”下的GUIDE命令。
(2)图形用户界面设计模板
- Blank GUI(Default)
- GUI with Uicontrols
- GUI with Axes and Menu
- Modal Question Dialog
(3)图形用户界面设计窗口
图形用户界面设计窗口由菜单栏、工具栏、组件选项板、界面设计区、状态栏等部分组成。
例子:建立一个图形用户界面,该界面包括一个坐标轴,3个静态文本,3个可编辑文本,2个按钮。还有一个按钮组,里面有两个单选按钮。
2、图形用户界面设计工具
从左到右依次是:
对齐对象工具、菜单编辑器、Tab键顺序编辑器、工具栏编辑器、代码编辑器、对象属性检查器、对象浏览器。
(1)对象属性检查器
用于检查/修改对象属性的工具
(2)菜单编辑器
(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';
- 成果图
五、APP设计工具
1、App Designer的使用
(1)打开App Designer
- 在MATLAB命令行窗口输入appdesigner命令。
- 在MATLAB主窗口选择“主页”选项卡,单击工具栏“新建”,再选择“应用程序”下的“App Designer”。
(2)App Designer窗口
快速访问工具栏,功能区,App编辑器
(3)App编辑器
- 设计视图:用于编辑用户界面
- 代码试图:用于编辑、调试、分析代码
2、App组件
常用组件、容器组件、仪器组件
例1 :建立一个App用户界面,该界面包括1个坐标轴,2个旋钮,2个按钮和1个按钮。
(1)打开App设计器窗口,添加组
(2)利用属性面板设置组件对象的属性
(3)定义回调函数
- 设置回调属性
- 选择右键快捷菜单中的回调函数
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
(4)打包App应用
六、图形用户界面应用举例
在今后的版本里,GUIDE将会被删除,目前版本会提示不建议使用。所以,建议使用APP设计工具。
1、例1
(1)添加组件,并设置相应的属性。
(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)输出结果
2、例2
(1)添加组件,并设置相应的属性。
(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)运行结果