使用原子子表创建可重用的子组件

news2024/12/26 10:56:41

原子子表是一个图形对象,可帮助您在Stateflow®图表中创建独立的子部件。原子子表允许:
对具有多个状态或层次结构的图表进行微小更改后,模拟速度更快。
在多个图表和模型中重复使用相同的状态或子表。
易于团队开发,适用于在同一图表的不同部分工作的人员。
为图表中的特定状态或子表手动检查生成的代码。
原子子表看起来不透明,并且在左上角包含标签“Atomic ”。如果使用库中链接的原子子表,则标签Link 将显示在左上角。

原子子图表示例

这个例子说明了普通子表和原子子表之间的区别。

在这里插入图片描述在空气控制器图表中,PowerOff是一个正常的子表。PowerOn是一个原子子表。两个子表看起来都是不透明的,但PowerOn在左上角包含标签Atomic。

在这里插入图片描述

使用原子子表的好处

原子子表结合了状态、正常子表和原子子系统的功能。
原子子表:
表现为独立图表。
支持用作库链接。
支持生成可重用代码。
允许映射输入、输出、参数、数据存储内存和输入事件。
原子子表不支持访问:
图表层次结构中每个级别的数据。
原子子表范围之外的事件广播。
原子子表不支持明确指定采样时间。

创建原子子表

可以通过转换现有子图表或通过链接库模型中的图表来创建原子子表。创建原子子表后,通过右键单击原子子表并选择“Subchart Mappings”来更新变量的映射。
将普通子图表转换为原子子表
要创建允许更快调试和代码生成工作流的独立组件,请将现有状态或子表转换为原子子表。在图表中,右键单击状态或正常子图表,然后选择Group & Subchart”>Atomic Subchart。标签“Atomic”将出现在子表的左上角。
转换为原子子表提供了该子表在图表中访问的每个数据对象的自己的副本。本地数据被复制为数据存储内存。其他数据(包括输入和输出数据)的范围不变。
如果状态或子表包含消息,则无法将其转换为原子子表。

链接库中的原子子表

若要创建可在多个图表和模型中重复使用的子组件,请从库模型创建链接。复制库模型中的图表,然后将其粘贴到另一个模型的图表中。如果库图表包含任何状态,它将显示为链接的原子子图表,标签为“链接”(Link),位于左上角。
这种建模方法最大限度地减少了对类似状态的维护。修改库中的原子子图表时,所做的更改会传播到所有图表和模型中的链接。
如果库图表只包含函数而不包含状态,则它在图表中显示为链接的原子框。

将原子子表转换为普通子表

将原子子表转换回状态或正常子表将删除其所有变量映射。转换将子图表父数据对象与它们映射到的图表父数据合并。
如果原子子图形是库链接,请右键单击原子子图形,然后选择Library Link> Disable Link。
要将原子子图形转换回普通子图形,请右键单击原子子图形,然后清除Group & Subchart > Atomic Subchart 复选框。
若要将子图形转换回状态,请在子图形上单击鼠标右键,然后清除Group & Subchart > Subchart 复选框。
如有必要,请重新排列图表中的图形对象。
如果出现以下情况,则无法将原子子图转换为普通子图:
原子子表将参数映射到单个变量名以外的表达式。例如,将参数data1映射到这些表达式中的一个可以防止原子子表转换为正常子表:

3
data2(3)
data2 + 3
这两个条件都成立:
原子子表包含使用MATLAB作为动作语言的MATLAB®函数或真值表函数。
原子子图不会将每个变量映射到主图表中同名的变量。

何时使用原子子图表

增量调试图表
假设您要测试包含多个状态或多个层次结构级别的图表中的一系列更改。
如果不使用原子子表,当对图表的一部分进行小的更改并开始模拟时,将对整个图表进行重新编译。因为重新编译整个图表可能需要很长时间,所以您决定在测试之前进行一些更改。但是,如果发现错误,则必须逐步完成所有更改,以确定错误的原因。
相反,当修改原子子图表时,只会对子图表进行重新编译,而不会对整个图表进行重新编辑。模拟的增量构建需要较少的时间重新编译。这种编译时间的减少使您能够测试每个单独的更改,而不是等待一次测试多个更改。通过单独测试每个更改,您可以快速识别导致错误的更改。

重用状态逻辑

假设要多次重复使用相同的状态或子表,以便于进行大规模建模。
如果不使用原子子部件,则必须手动维护子部件的每个副本。例如,此图表包含两个结构相似的状态。这两种状态之间的唯一区别是变量的名称。如果你在状态a中进行了更改,那么你必须在状态B中进行同样的更改。

在这里插入图片描述
要通过使用链接的原子子部件来启用子组件的重用,请创建状态a的单个副本,并将其存储为库模型中的图表。从该库中,在图表中复制并粘贴原子子图表两次。然后根据需要更新子表变量的映射。
在这里插入图片描述
更改库中的原子子表时,更改会传到所有库链接。

开发多人使用的图表

假设您想将图表分解为子组件,因为多个人正在处理图表的不同部分。
如果没有原子子表,一次只能有一个人编辑模型。如果有人编辑图表的一部分,而其他人编辑同一图表的另一部分,则必须在提交时合并这些更改。
相反,您可以将图表的不同部分存储为链接的原子子表。由于原子子表表现为独立对象,不同的人可以在不影响图表其他部分的情况下处理图表的不同部分。在提交时,不需要合并,因为更改存在于单独的模型中。
检查生成的代码
假设您要针对图表的特定部分手动检查Simulink®Coder™或Embedded Coder®生成的代码。
如果不使用原子子表,则在一个文件中为整个模型生成代码。要查找图表特定部分的代码,必须查看整个文件。
相反,您可以指定原子子表的代码显示在单独的文件中。这种代码生成方法允许对图表的特定部分进行单元测试。您可以避免搜索不相关的代码,只关注您感兴趣的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1871261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大语言模型在医疗领域的进展、应用和挑战_医疗大语言模型算法csdn

### 概述 本文综述了医学领域大型语言模型(LLM)的进展、应用和面临的挑战。大型语言模型如ChatGPT在理解和生成人类语言方面显示出了显著的能力,引起了广泛关注。在医学领域,研究人员正致力于利用LLM支持各种医疗任务&#xff0c…

文华财经盘立方博易大师主图指标公式大全源码均线

文华财经盘立方博易大师主图指标公式大全源码均线: N:3; EMA25:EMA(C,25),COLORRED,LINETHICK2; EMA70:EMA(C,70),COLORGREEN,LINETHICK2; EMA450:EMA(C,450),COLORYELLOW,LINETHICK2; CONDA1:EMA25>EMA70&&C>HV(H,6)&&C>EMA450&…

C语言 | Leetcode C语言题解之第179题最大数

题目&#xff1a; 题解&#xff1a; long cmp(int *x, int *y) {unsigned long sx 10, sy 10;while (sx < *x) {sx * 10;}while (sy < *y) {sy * 10;}return sx * (*y) (*x) - sy * (*x) - (*y); }char *largestNumber(int *nums, int numsSize) {qsort(nums, numsSi…

Linux C 程序 【01】最小程序

1.开发背景 基于 RK3568 平台的基础上&#xff0c;编译一个在系统上运行的最小程序。 2.开发需求 由于 RK3568 作为宿主机&#xff0c;在上面编译程序比较慢&#xff0c;所以还是采用在 Ubuntu 下交叉编译后再拷贝到宿主机上运行。 设计实验&#xff1a; 1&#xff09;搭建 M…

数据分析必备:一步步教你如何用matplotlib做数据可视化(14)

1、Matplotlib 图像 Matplotlib包中的图像模块提供加载&#xff0c;重新缩放和显示图像所需的功能。Pillow库支持加载图像数据。Matplotlib仅支持PNG图像。如果本机读取失败&#xff0c;下面显示的命令将回退到Pillow。 此示例中使用的图像是PNG文件&#xff0c;但请记住数据的…

AFLNet入门教学——测试RTSP协议实现Live555(Ubuntu)

1、简介 本文旨在使用AFLNet对RTSP协议实现Live555进行模糊测试。实验环境为&#xff1a;Ubuntu22.04.4AFLNet安装参考&#xff1a;AFLNet入门教学——安装&#xff08;Ubuntu22.04.4&#xff09;-CSDN博客 2、安装Live555 本次实验采取的是live555在2018年8月28日上传的版本…

数据库怎么同步

数据库要怎么同步呢&#xff0c;有很多方法&#xff0c;看你用什么数据库&#xff0c;如果是Sqlserver,你要数据库同步&#xff0c;那么可以使用自带的订阅发布&#xff0c;订阅发布应该是不错的方法&#xff0c;但是我上次要配置双向同步&#xff0c;它的对等发布好像没部署成…

【LeetCode】四、栈相关:有效的括号 + 下一个更大的元素

文章目录 1、栈结构2、Java中的栈3、leetcode20&#xff1a;有效的括号4、leetcode496&#xff1a;下一个更大元素 1、栈结构 和队列相反&#xff0c;栈先进后出 时间复杂度&#xff1a;访问、插入、删除都在栈顶进行操作&#xff0c;时间复杂度为O(1)&#xff0c;搜索需要遍…

【自监督-MIM】系列方法学习二

Masked image modeling 是一种训练深度学习模型的技术,尤其是在视觉领域,类似于自然语言处理中的掩码语言建模(Masked Language Modeling)。它通过在输入图像中随机遮挡(或称为掩码)部分区域,然后训练模型来预测这些被遮挡部分的内容,从而提高模型的视觉理解能力。 Ma…

常见的字符串函数(包含头文件string.h)和字符函数(2)

八. strstr函数 1.strstr的定义 char *strstr( const char *str1, const char *str2 ); ->1. strstr查找子串(str2)在字符串(str2)中第一次出现的位置&#xff0c;记录并返回该位置的指针&#xff0c;如果找不到&#xff0c;则返回NULL ->2. str1&#xff1a;查找字符…

Java毕业设计 基于SSM vue药店管理系统小程序 微信小程序

Java毕业设计 基于SSM vue药店管理系统小程序 微信小程序 SSM 药店管理系统小程序 功能介绍 用户 登录 注册 首页 药品信息 药品详情 加入购物车 立即购买 收藏 购物车 立即下单 新增收货地址 我的收藏管理 用户充值 我的订单 留言板 管理员 登录 个人中心 修改密码 个人信息…

【深度学习】python之人工智能应用篇--跨模态生成技术

跨模态生成技术概述 跨模态生成技术是一种将不同模态的数据&#xff08;如文本、图像、音频、视频等&#xff09;进行融合和转换的技术。其目标是通过将一个模态的数据作为输入&#xff0c;生成与之对应的另一个模态的输出。这种技术对于突破单一模态的局限性&#xff0c;提高…

【九】【QT开发应用】WebRTC的sigslot源码和使用WebRTC的sigslot使用编写信号槽

WebRTC&#xff08;Web Real-Time Communication&#xff09; 是一个开源项目&#xff0c;提供实时通信能力&#xff0c;广泛应用于视频、音频和数据传输。在WebRTC的实现中&#xff0c;sigslot库用于信号和槽机制&#xff0c;以实现事件驱动的编程模型。 WebRTC的sigslot部分…

如何精准分析人形机器人运动数据?

全球“机器换人”进程加速,人形机器人有望成为AI下一个重要落地应用场景;EtherCAT-Analyzer具备分析人形机器人所有关节和电池与主站的通讯信息,快速掌握节点网络状态! 前言 随着人形机器人行业的发展及《中国制造2025》的全面实施,传统的脉冲模式控制很大程度上制约了机…

一个例子理解傅里叶变换的计算过程

假设我们有一个简单的信号&#xff0c;由两个不同频率的正弦波组成&#xff0c;我们希望通过傅里叶变换来分析其频谱。 示例信号 假设我们有一个信号 &#xff1a; 这个信号由两个频率成分组成&#xff1a;一个50 Hz的正弦波和一个120 Hz的正弦波&#xff0c;后者的振幅是前者…

用一个实例看如何分享大量照片 续篇二,关于Exif (Exchangeable Image File) - 可交换图像文件

续篇二&#xff1a;说说关于照片隐含的 Exif (Exchangeable Image File) 可交换图像文件 数码照片的Exif 参数有很多&#xff0c;重要的Exif信息&#xff1a;拍摄日期、时间、拍摄器材、GPS信息。 当然这主要对自己的档案有意义&#xff0c;如果放到网上还是建议抹去这些信息。…

微服务框架中的Eureka和Ribbon的个人理解

微服务框架需要学习的东西很多&#xff0c;基本上我把它分为了五个模块&#xff1a; 第一&#xff1a;微服务技术模块 分为三个常用小模块&#xff1a; 1.微服务治理&#xff1a; 注册发现 远程调用 配置管理 网关路由 2.微服务保护&#xff1a; 流量控制 系统保护 熔断降级 服…

数据转换 | Matlab基于R对称点模式(symmetric dot pattern, SDP)一维序列信号转二维时频图象

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 数据转换 | Matlab基于R对称点模式(symmetric dot pattern, SDP)一维序列信号转二维时频图象 SDP常被用于信号分析和深度学习模式识别。 SDP是一种基于极坐标系的图像表示方法&#xff0c;可以直接将原始信…

ECMAScript6介绍及环境搭建

这实际上说明&#xff0c;对象的解构赋值是下面形式的简写。 let { foo: foo, bar: bar } { foo: ‘aaa’, bar: ‘bbb’ }; 也就是说&#xff0c;对象的解构赋值的内部机制&#xff0c;是先找到同名属性&#xff0c;然后再赋给对应的变量。真正被赋值的是后者&#xff0c;而…

基于sivaco设计仿真PT型IGBT和NPT型IGBT结构

本项目基于使用仿真软件SIVACO来仿真研究PT型和NPT型的IGBT结构特点&#xff0c;并且通过仿真研究对于不同的掺杂浓度、沟道宽度等对器件的特性产生不同的影响。 资料获取到咸&#x1f41f;&#xff1a;xy591215295250 \\\或者联系wechat 号&#xff1a;comprehensivable &…