matlab app designer使用心得

最近导师让我在simulink仿真的基础上整一个仿真软件,然后就发现现在matlab已经把之前的GUIDE升级成了app designer,一番摸索踩坑之后,总算整了出来,首先先放几张图。


文章目录

    • matlab app designer使用心得
  • 前言
  • 一、读取app的输入参数
  • 二、实时更新数据
    • 2.1 simulink中的设置
    • 2.2 app designer中的设置
  • 三、实时更新曲线
    • 3.1 simulink中的设置
    • 3.2 app designer中的设置
  • 总结

前言

其实也比较简单,总结以下需求。
1.能通过滑动条设置合适的模型输入参数。
2.能实时更新仿真时的系统数据及绘制曲线。

一、读取app的输入参数

读取滑动条的输入参数还是比较简单的,直接写在开始按钮的回调中就可:

function StartSimPushed(app, event)% 获取输入参数Ist = app.ISlider.Value;Tst = app.TSlider.Value;Vcm = app.VSlider.Value;Hdes = app.HSlider.Value;% 设置simulink模型参数set_param([bdroot,'/电堆电流Ist'],'Value',num2str(Ist));set_param([bdroot,'/电堆温度Tst'],'Value',num2str(Tst));set_param([bdroot,'/空压机控制电压vcm'],'Value',num2str(Vcm));set_param([bdroot,'/指定相对湿度phi,des'],'Value',num2str(Hdes));% 启动仿真sim("PEMFC_stack");
end

二、实时更新数据

主要是参考了mathwork官方论坛的这个回答How do I update a GUI designed in App Designer with data from a running Simulink model?

2.1 simulink中的设置

simulink中右键>模型属性>回调>InitFcn:

hApp = fuel_cell_app;

hApp不要改,等号后面的是自己app的名字。

接着,simulink中右键>模型属性>回调>StartFcn:

blk = 'PEMFC_stack/Display';
event = 'PostOutputs';
listener = @(app, event) updateGUI(hApp);
h = add_exec_event_listener(blk, event, listener);

要改的是blk等号右边接受实时更新数据模块的simulink路径,其他的不要改。

比如,这里我使用了display模块接收要实时观测的电压数值,blk后面就是display模块的路径。

2.2 app designer中的设置

在左上角菜单栏选择函数>公共函数,添加一个公共函数,用来接收指定仿真模块的实时数据,并传给APP。

function updateGUI(app, varargin)% Create an object that gets the run-time value of the specified blockrto = get_param([bdroot,'/Display'],'RuntimeObject');rto1 = get_param([bdroot,'/Display1'],'RuntimeObject');rto2 = get_param([bdroot,'/Display2'],'RuntimeObject');rto3 = get_param([bdroot,'/Display3'],'RuntimeObject');% Update the GUI accordingly. In this case a the value of an EditField is being updated.app.StackVoltage.Value = num2str(rto.InputPort(1).Data);app.OER.Value = num2str(rto1.InputPort(1).Data);app.AnodePressure.Value = num2str(rto2.InputPort(1).Data);app.CathodePressure.Value = num2str(rto3.InputPort(1).Data);......
end

三、实时更新曲线

其实原理和实时更新数据差不多,只是在simulink中的操作不太一样。
参考了这篇文章分享一个gui或app designer实时显示simulink仿真波形和实时进度的方法

3.1 simulink中的设置

将需要实时绘制曲线的信号连接到to file模块,并像下图一样设置to file模块。

3.2 app designer中的设置

这里我没有像参考链接中那样使用定时器来更新曲线,试了很多次都没成功,最后发现直接把绘图命令写在updateGUI函数中就可以达到效果~

function updateGUI(app, varargin)% Create an object that gets the run-time value of the specified blockrto = get_param([bdroot,'/Display'],'RuntimeObject');rto1 = get_param([bdroot,'/Display1'],'RuntimeObject');rto2 = get_param([bdroot,'/Display2'],'RuntimeObject');rto3 = get_param([bdroot,'/Display3'],'RuntimeObject');% Update the GUI accordingly. In this case a the value of an EditField is being updated.app.StackVoltage.Value = num2str(rto.InputPort(1).Data);app.OER.Value = num2str(rto1.InputPort(1).Data);app.AnodePressure.Value = num2str(rto2.InputPort(1).Data);app.CathodePressure.Value = num2str(rto3.InputPort(1).Data);% plot the anode gas pressureload pH2_an.mat;load pv_an.mat;plot(app.AnodePlot_1,pH2_an.time,pH2_an.data/1000);app.AnodePlot_1.XLim = [0,max(pH2_an.time)];app.AnodePlot_1.XTick = [0:max(pH2_an.time)/10:max(pH2_an.time)];app.AnodePlot_1.XTickLabelMode = 'auto';app.AnodePlot_1.YLim = [0,1000];app.AnodePlot_1.YTick = [0:100:1000];app.AnodePlot_1.YTickLabelMode = 'auto';plot(app.AnodePlot_2,pv_an.time,pv_an.data/1000);app.AnodePlot_2.XLim = [0,max(pv_an.time)];app.AnodePlot_2.XTick = [0:max(pv_an.time)/10:max(pv_an.time)];app.AnodePlot_2.XTickLabelMode = 'auto';app.AnodePlot_2.YLim = [0,100];app.AnodePlot_2.YTick = [0:10:100];app.AnodePlot_2.YTickLabelMode = 'auto';% Pause to see the changespause(0.0001);

总结

本文简单介绍了一下下app designer的几点使用心得,希望可以帮到大家~~

matlab app designer使用心得相关推荐

  1. MATLAB App Designer GUI开发从0到1(二)

    文章目录 前言 一.开关以及旋钮 1. 左上角:旋钮 2.右上角:90度仪表 3.左下角:分档开关 4.右下角:开关 5.对旋钮微调 二.画图 1. 普通画图 2.添加小组件 三.回调函数 简单的回调 ...

  2. 《MATLAB App Designer从入门到实践》随书源代码

    GUIDE已经被MATLAB抛弃了,你还不知道吗?App Designer才是发展的方向 目前市面上MATLAB GUI编程的书籍琳琅满目,但大多数是基于GUIDE开发的,MATLAB从2016年开始 ...

  3. MATLAB App Designer入门实战(一)

    最近也是在研究MATLAB App Designer,开这样的一个系列主要是为了记录我在研究App Designer时遇到的一部分问题的解决,和一部分有趣的想法,每一篇文章会展示如何将一个项目mlap ...

  4. 基于MATLAB APP Designer 和 Python 的音视频剪辑

    简介 本软件是基于 MATLAB APP Designer 和 Python 联合编制的一款简易音视频剪辑软件,可以拿来练手MATLAB APP Designer.面向对象编程.假期空闲时和同学一起自 ...

  5. 汽车各档爬坡度曲线matlab,基于MATLAB App Designer的汽车爬坡能力建模与仿真

    1. 引言 汽车常常需要在不同区域的不同道路上行驶,尤其在山区道路上,坡陡路窄,汽车必须具有一定的爬坡能力,爬坡能力通常由最大爬坡度来衡量,最大爬坡度是汽车动力性能的重要指标之一.为此开展了基于MAT ...

  6. Matlab App Designer编译打包exe后读取文件路径问题

    首先,标题略长-- 其次,当你看到这个长长的标题并点进来的时候:bro,恭喜你终于找到了一个行之有效的解决方案! ~好了,下面我们言归正传. 关于MATLAB App Designer自身的介绍不是此 ...

  7. Matlab App Designer 学习笔记

    提示:本文的学习视频来自B站小刘老师的教程 链接:https://www.bilibili.com/video/BV16f4y147x9?from=search&seid=2070258926 ...

  8. 基于Matlab App Designer的语音信号分析与处理(二):IIR和FIR滤波器的设计,语音信号的滤波

    接上文:https://blog.csdn.net/weixin_53877178/article/details/122470759 目录 一.课题的任务 二.内容.步骤和要求 (1)语音信号的采集 ...

  9. Matlab App Designer 实现简单程序的设计笔记 (实时更新)

    问题引入 最近发现matlab的GUI界面马上就要被取消了,取而代之matlab官方弄了一个叫App Designer的东西,打开看了一下,发现截面还挺好看的,比原本的GUI好友好多了.所以做个笔记, ...

最新文章

  1. 零代码 OR 低代码
  2. [LeetCode]Contains Duplicate III
  3. java 接口 泛型示例,java泛型接口实现示例
  4. c语言用户输入编程,C语言入门教程-Printf:读取用户输入
  5. 对你的的应用程序进行Debug
  6. java proguard 使用_一步步教你使用Proguard混淆Java源代码
  7. 电脑计算机和算盘童话作文,消失的算盘作文
  8. 马的走法编程java_马周游问题(Java实现)
  9. dram和nand哪个难生产_空调哪个牌子好 推荐质量最好又省电的品牌
  10. [转载] 【Python】bytes数据类型
  11. 【BZOJ 1497】 [NOI2006]最大获利
  12. Unity2018引用System.Windows.Forms.dll发布报错
  13. 2020年中国养老地产行业市场现状分析,提高养老地产运营水平是关键「图」
  14. pandas category数据类型
  15. unbuntu配置scrcpy
  16. 线性系统粗浅认识——第七次作业
  17. vscode上利用screen命令跑代码
  18. 正则表达式中的方法、检测、特殊字符、敏感词替换等等
  19. 【学习技巧】——怎样改掉学习上的坏习惯
  20. 控制器模式_前控制器模式简介,第1部分

热门文章

  1. 区别:迭代加深搜索广度优先搜索
  2. [LayoutConstraints] Unable to simultaneously satisfy constraints.
  3. mysql报错 Your password does not satisfy the current policy requirements
  4. 用python 画太阳_Python PIL画一个太阳神的圆圈
  5. web端获取微信小程序云数据库数据实现增删改查等操作
  6. mysql 启动出现系统错误193
  7. 低学历能学单片机吗?听听过来人的说法
  8. PHA挖kuang什么时候开始?
  9. JDK、JRE、JVM分别是什么及它们之间的有什么关联
  10. 本体创始人李俊:公链和跨界是未来区块链发展的关键(GBCAX)