专题八图形窗口与坐标轴-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)运行结果


总结

目录
打赏
0
0
0
1
6
分享
相关文章
使用 PyTorch 进行音频信号处理的数据操作和转换
使用 PyTorch 进行音频信号处理的数据操作和转换
147 0
关于HTTP劫持,如何理解、防范与应对
**HTTP劫持详解:原理、危害与对策** HTTP劫持是中间人攻击,通过拦截未加密的HTTP通信窃取信息。危害包括信息泄露、恶意软件传播和内容篡改。常见形式有代理服务器、会话、DNS劫持及恶意软件。检测方法包括检查网络、观察浏览器行为、使用安全工具及报告问题。 防范措施包括使用HTTPS、验证TLS/SSL证书、避免不安全Wi-Fi、启用HSTS、设置CSP、更新软件、使用WAF、加密DNS及监控日志。德迅云安全提供实战化安全产品,如安全加速CSDN,防御Web攻击,保障业务安全和快速访问。保持安全意识和更新防护策略至关重要。
使用stm32f103驱动lcd1602
使用stm32f103驱动lcd1602
362 0
C语言变量的内存地址深入探究
C语言变量的内存地址深入探究
143 0
ZYNQ-Video out IP和Video Timing Controller IP简介
ZYNQ-Video out IP和Video Timing Controller IP简介
1005 0
ZYNQ-Video out IP和Video Timing Controller IP简介
数字信号处理-05- FPGA常用运算模块-复数乘法器(一)
数字信号处理-05- FPGA常用运算模块-复数乘法器
1088 0
数字信号处理-05- FPGA常用运算模块-复数乘法器(一)
Linux网络服务之部署YUM仓库(中)
1 YUM简介 1.1 YUM简介 CentOS使用yum和dnf 解决rpm的包依赖关系。
379 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等