专栏首页帮你学MatLab实时获取simulink状态

实时获取simulink状态

我们想要在GUI界面内展示simulink模型的运行状态,可以通过给模型中特定模块绑定监听事件,当模块发生特定事件后调用我们绑定的函数,在函数当中获取模型中的其他参数值

显示界面使用的是高版本MATLAB的App designer工具

这里主要是选择模型文件、设定运行需要的参数和开始运行模型文件,控件的回调函数写法与原先的GUI差别不大

获取参数值并且更新显示(也就是绑定在模块事件上)的函数:

function varargout = updateApp(varargin)

persistent app_plot

% 声明持久变量存放参数

rto1 = get_param('exampleModell/Out1','RuntimeObject');

str1 = num2str(rto1.InputPort(1).Data);

rto2 = get_param('exampleModell/Out2','RuntimeObject');

str2 = num2str(rto2.InputPort(1).Data);

% 获取界面中的绘图句柄

all_tag_objects = findall(0, '-property', 'tag');

all_tags = get(all_tag_objects, 'tag');

[tf, idx] = ismember('Out1', all_tags);

if tf

st1 = all_tag_objects(idx);

end

[tf, idx] = ismember('Out2', all_tags);

if tf

st2 = all_tag_objects(idx);

end

[tf, idx] = ismember('UIAxes', all_tags);

if tf

app_plot = all_tag_objects(idx);

end

XData = get_param('exampleModell','SimulationTime');

YData = rto1.InputPort(1).Data;

% 更新GUI显示

set(st2,'Value',str2double(str2));

set(st1,'Value',str2double(str1));

plot(app_plot,XData,YData,'.');

hold(app_plot, 'on' );

drawnow;

这里用的模型就是简单的示例

在模型的 StartFcn 回调函数中注册侦听程序、在slx模型文件右击

弹出菜单后选择model properties可以进入模型回调函数设置界面

很多时候我们需要在模型运行结束后绘图、就是在stopfcn里面调用写好的绘图m文件

我们这里在StartFcn 回调函数中给想要获取参数值的模块注册侦听程序、模块每次输出值得时候就会调用updateApp函数、运行起来就是这样的效果

示例文件下载链接:

https://pan.baidu.com/s/1MV3UnhJIFkV84CPOyiN9yg

提取码:

ezsq

本文分享自微信公众号 - 帮你学MatLab(MatLab_helper)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MATLAB自动扫雷(2)——排雷插旗

    前面已经实现了雷区的扫描,现在就是要根据已知情况计算哪个方块底下是雷、哪个方块底下是空白,在初级、中级难度下只要计算每个方块周围的8个方块就好。

    万木逢春
  • MATLAB操作MongoDB数据库

    自然语言处理中的分词结果,数字图像处理中的分割识别结果,它们通常有着不一样个数的单元,当我们需要逐个处理这些单元数据的时候如果全部导入MATLAB会占用大量内存...

    万木逢春
  • 《思考的艺术》读书笔记(一)

    要想掌握思考的艺术,首先要了解思考,思考是能够指挥的心理活动,不同于做梦。既然能够指挥,就希望能够通过努力获得最大收益,如何才能持续有效的获得收益,书中给出很多...

    万木逢春
  • 一日一技:如何使用JavaScript移除少数派的付费内容

    少数派(https://sspai.com/)是一个以生产力、效率工具为主要内容的数字消费指南平台。由于网站需要盈利,所以他们在网站上有所克制地增加了一些付费内...

    青南
  • 张雨石:Adam - 大规模分布式机器学习框架

    用户1737318
  • 学界 | DeepMind想用IQ题测试AI的抽象思维能力,进展还不错

    阿基米德基于对物体体积的抽象理解,悟到了物体的体积与物体浮力之间的关系。这就是抽象推理的魔力。

    大数据文摘
  • python+locust性能测试学习笔记

    Locust(俗称 蝗虫)一个轻量级的开源压测工具,基本功能是用Python代码描述所有测试。不需要笨拙的UI或庞大的XML,只需简单的代码即可。

    wencheng
  • Python HTTP POST方法一例

    create project: multimech-newproject my_project

    py3study
  • 性能测试学习之二 ——性能测试模型(PV计算模型)

    =( (总PV*80%)/(24*60*60*40%))/服务器数量              

    流柯
  • python文件内容截取

    # ###########################################

    py3study

扫码关注云+社区

领取腾讯云代金券