matlab app designer使用心得
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使用心得相关推荐
- MATLAB App Designer GUI开发从0到1(二)
文章目录 前言 一.开关以及旋钮 1. 左上角:旋钮 2.右上角:90度仪表 3.左下角:分档开关 4.右下角:开关 5.对旋钮微调 二.画图 1. 普通画图 2.添加小组件 三.回调函数 简单的回调 ...
- 《MATLAB App Designer从入门到实践》随书源代码
GUIDE已经被MATLAB抛弃了,你还不知道吗?App Designer才是发展的方向 目前市面上MATLAB GUI编程的书籍琳琅满目,但大多数是基于GUIDE开发的,MATLAB从2016年开始 ...
- MATLAB App Designer入门实战(一)
最近也是在研究MATLAB App Designer,开这样的一个系列主要是为了记录我在研究App Designer时遇到的一部分问题的解决,和一部分有趣的想法,每一篇文章会展示如何将一个项目mlap ...
- 基于MATLAB APP Designer 和 Python 的音视频剪辑
简介 本软件是基于 MATLAB APP Designer 和 Python 联合编制的一款简易音视频剪辑软件,可以拿来练手MATLAB APP Designer.面向对象编程.假期空闲时和同学一起自 ...
- 汽车各档爬坡度曲线matlab,基于MATLAB App Designer的汽车爬坡能力建模与仿真
1. 引言 汽车常常需要在不同区域的不同道路上行驶,尤其在山区道路上,坡陡路窄,汽车必须具有一定的爬坡能力,爬坡能力通常由最大爬坡度来衡量,最大爬坡度是汽车动力性能的重要指标之一.为此开展了基于MAT ...
- Matlab App Designer编译打包exe后读取文件路径问题
首先,标题略长-- 其次,当你看到这个长长的标题并点进来的时候:bro,恭喜你终于找到了一个行之有效的解决方案! ~好了,下面我们言归正传. 关于MATLAB App Designer自身的介绍不是此 ...
- Matlab App Designer 学习笔记
提示:本文的学习视频来自B站小刘老师的教程 链接:https://www.bilibili.com/video/BV16f4y147x9?from=search&seid=2070258926 ...
- 基于Matlab App Designer的语音信号分析与处理(二):IIR和FIR滤波器的设计,语音信号的滤波
接上文:https://blog.csdn.net/weixin_53877178/article/details/122470759 目录 一.课题的任务 二.内容.步骤和要求 (1)语音信号的采集 ...
- Matlab App Designer 实现简单程序的设计笔记 (实时更新)
问题引入 最近发现matlab的GUI界面马上就要被取消了,取而代之matlab官方弄了一个叫App Designer的东西,打开看了一下,发现截面还挺好看的,比原本的GUI好友好多了.所以做个笔记, ...
最新文章
- 零代码 OR 低代码
- [LeetCode]Contains Duplicate III
- java 接口 泛型示例,java泛型接口实现示例
- c语言用户输入编程,C语言入门教程-Printf:读取用户输入
- 对你的的应用程序进行Debug
- java proguard 使用_一步步教你使用Proguard混淆Java源代码
- 电脑计算机和算盘童话作文,消失的算盘作文
- 马的走法编程java_马周游问题(Java实现)
- dram和nand哪个难生产_空调哪个牌子好 推荐质量最好又省电的品牌
- [转载] 【Python】bytes数据类型
- 【BZOJ 1497】 [NOI2006]最大获利
- Unity2018引用System.Windows.Forms.dll发布报错
- 2020年中国养老地产行业市场现状分析,提高养老地产运营水平是关键「图」
- pandas category数据类型
- unbuntu配置scrcpy
- 线性系统粗浅认识——第七次作业
- vscode上利用screen命令跑代码
- 正则表达式中的方法、检测、特殊字符、敏感词替换等等
- 【学习技巧】——怎样改掉学习上的坏习惯
- 控制器模式_前控制器模式简介,第1部分
热门文章
- 区别:迭代加深搜索广度优先搜索
- [LayoutConstraints] Unable to simultaneously satisfy constraints.
- mysql报错 Your password does not satisfy the current policy requirements
- 用python 画太阳_Python PIL画一个太阳神的圆圈
- web端获取微信小程序云数据库数据实现增删改查等操作
- mysql 启动出现系统错误193
- 低学历能学单片机吗?听听过来人的说法
- PHA挖kuang什么时候开始?
- JDK、JRE、JVM分别是什么及它们之间的有什么关联
- 本体创始人李俊:公链和跨界是未来区块链发展的关键(GBCAX)