专题八图形窗口与坐标轴-3

简介: 专题八图形窗口与坐标轴

五、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)运行结果


总结

目录
相关文章
|
12月前
|
存储 数据可视化
专题八图形窗口与坐标轴-2
专题八图形窗口与坐标轴
92 0
|
5月前
Qt绘图(线条、椭圆、矩形、图片滚动)
Qt绘图(线条、椭圆、矩形、图片滚动)
282 3
|
6月前
LabVIEW当鼠标悬停在图形曲线上时显示坐标
LabVIEW当鼠标悬停在图形曲线上时显示坐标
75 1
|
12月前
|
存储
专题八图形窗口与坐标轴-1
专题八图形窗口与坐标轴
74 0
|
移动开发 HTML5
使用三次贝塞尔曲线绘制弧形菜单
使用三次贝塞尔曲线绘制弧形菜单
openlayers之绘制矩形星星拉框放大自定义图形
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/83036414 简介:openlayers绘制矩形、星星、拉框绘制,以及自定义图形。
1615 0