Matlab编程技巧:通过脚本获取/修改Stateflow参数

2024-09-03 11:38

本文主要是介绍Matlab编程技巧:通过脚本获取/修改Stateflow参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Simulink模型中,经常会用Stateflow做一些状态转移或者流程图的建模。除了状态转移的逻辑以外,也经常需要关注Stateflow的参数,包括Data和Event等。

本文会介绍通过Matlab脚本调用API来获取和修改Stateflow参数的方法。本文例程基于Matlab2018a版本。

文章目录

  • 1 手动获取/修改Stateflow参数
  • 2 通过Matlab脚本获取/修改Stateflow参数
    • 2.1 获取Stateflow操作句柄
    • 2.2 获取Data对象
    • 2.3 修改Data对象
  • 3 关于

1 手动获取/修改Stateflow参数

1.首先在Matlab命令行中输入open sf_security.slx,打开Matlab自带的一个Stateflow例程。模型中包含了一个Chart模块,以及若干输入输出。
在这里插入图片描述
2.点击Simulink上方工具栏中的Model Explorer,再选中左边的Security System,就可以看到该Chart中的所有内容信息。
在这里插入图片描述
3.选中Chart中的某个参数,就会显示出该参数的具体配置。在配置界面中可以手动修改。后文会说明如何通过脚本修改这些参数。
在这里插入图片描述

2 通过Matlab脚本获取/修改Stateflow参数

Stateflow的API和一般的Simulink模块有所不同,接下来会一步一步研究如何用脚本找到例子中的Stateflow参数。

2.1 获取Stateflow操作句柄

由于Stateflow的策略都是在Chart模块中体现的,所以第一步是获取Simulink里面的Chart的句柄。

在Matlab中输入以下命令行:

>>rt = sfroot;
>>myState = rt.find('-isa','Stateflow.Chart');

然后,在Matlab工作区就会返回名为myState的Chart对象,这个Chart对象就是模型中的Security System。注意,如果模型中有多个Chart,就会返回一个包含所有Chart对象的数组。
在这里插入图片描述
获取了Stateflow句柄后,可以通过脚本修改这个Chart属性。例如下面的命令,可以将Stateflow语言设置为C语言:

>> myState.ActionLanguage = 'C'

属性就改成了如下所示:
在这里插入图片描述

2.2 获取Data对象

在Matlab命令行中输入以下代码,就可以返回所有该Chart中包含的所有Data。

>>StateData = myState.find('-isa','Stateflow.Data');

Matlab右侧的工作区:
在这里插入图片描述
对应的Model Explorer中的8个Data:
在这里插入图片描述
当然,在find函数中也可以加入查找的条件。譬如,查找Name为D_mode的Data,代码为:

>>StateData = myState.find('-isa','Stateflow.Data','Name','D_mode');

或者查找Scope为Input的Data,就会返回七个相应的Data:

>> StateData = myState.find('-isa','Stateflow.Data','Scope','Input');

2.3 修改Data对象

假如想要修改D_mode的Type为single,可以通过以下代码:

>>StateData = myState.find('-isa','Stateflow.Data','Name','D_mode');
>>StateData.DataType = 'single';

这样的话,Model Explorer中的Type就被改为了single,如图:
在这里插入图片描述
对于Stateflow中的Event和Message等其他类型的参数,也可以通过类似的方式用脚本调用API去修改,这里不再赘述。

3 关于<Matlab技巧>的总结

< Matlab编程技巧 >详细阐述了如何通过Matlab调用一些API接口修改模型。

实际上,通过Matlab可以调用的接口远不止于此,但这几个类型的脚本是最为实用的,能解决实际工作中遇到的大部分问题,因为在MBD开发中,模型无非就是由模块、信号线、数据字典和状态转移组成的。

在不同的公司,面对不同项目的过程中,经常会总结出一些适用于自己团队的模型建模规范。譬如,要求在某种情况下,需要指定模块的输出类型等等。如果将这一系列自定义的规范写成脚本,集成到Simulink的Model Advisor中,可以减少策略工程师开发脚本的时间,将会大大提高模型检查效率。后续将会以这几篇文章为基础,研究Model Advisor的应用。

>>返回个人博客总目录

这篇关于Matlab编程技巧:通过脚本获取/修改Stateflow参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132872

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n