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

原子子表是一个图形对象,可帮助您在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.mzph.cn/news/862065.shtml

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

相关文章

Python网络爬虫实战6—下一页,模拟用户点击,切换窗口

【前期提要】感兴趣的可以看看往期文章哈~ Python网络爬虫5-实战网页爬取 Python网络爬虫4-实战爬取pdf Pyhon网络爬虫3-模拟用户点击 Python网络爬虫实战2-下载url下的pdf Python网络爬虫基础1 1.需求背景 针对长虹美菱电器说明书网页形式,编写爬虫代码&#xff…

【财务数字化转型之底座】集团企业财务数据中台系统建设方案

引言:随着企业规模的不断扩大和业务的复杂化,传统的财务管理模式已难以满足集团企业的数据整合、分析和决策需求。因此,建设一个高效、稳定、安全的财务数据中台系统,成为集团企业数字化转型的重要一环。本方案旨在构建一个集数据…

算力服务先锋!和鲸科技入选《2024中国智算产业生态图谱》

2024 年 6 月 18 日,由科智咨询发起的《2024中国智算产业生态图谱》正式发布,依托 ModelWhale 构建的智算算力资源服务,以及深耕多年的 ModelWhale 数据科学协同平台优势,和鲸科技成功入选。 “智算时代”技术不断进步&#xff0c…

指针并不是用来存储数据的,而是用来存储数据在内存中地址(内存操作/函数指针/指针函数)

推荐:1、4、5号书籍 1. 基本概念 首先,让小明了解指针的基本概念: 指针的定义:指针是一个变量,它存储的是另一个变量的地址。指针的声明:例如,int *p表示一个指向整数的指针变量p。 2. 形象…

生命在于学习——Python人工智能原理(2.6.1)

六 Python的文件系统 6.1 打开文件 在Python中,可以使用内置的open函数来打开文件,open函数的基本语法如下: file open(file_name, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone)参数说明&#…

【Web3】Web3.js 启动!并解决Web3 is not a constructor报错

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 本节教大家如何启动Web3.js 目录 Web3 启动! 于是很愉快的报错 创建实例! 出来了 Web3:模块…

《PIDNet: A Real-time Semantic Segmentation Network Inspired by PID Controllers》

期刊:CVPR 年份:2023 代码:https://github.com/XuJiacong/PIDNet 摘要 双分支网络架构已经证明了它在实时语义分割任务中的有效性和有效性。然而,高分辨率细节和低频上下文的直接融合的缺点是细节特征很容易被周围的上下文信息…

快储存,分布式文件系统,对象储存

Ceph块存储 镜像快照 快照可以保存某一时间点时的状态数据快照是映像在特定时间点的只读逻辑副本希望回到以前的一个状态,可以恢复快照使用镜像、快照综合示例 rbd create img1 --size 10G 创建镜像rbd ls 查看镜像 rbd info img1 #查看…

Win32消息机制原理及消息运转

一.消息机制原理 1.消息类型: WIndows定义的一系列WM_XXX开头的,用来表示键盘按键,鼠标点击,窗口变化,用户自定义等各种消息; 2.消息队列: Windows为每一个正在运行的程序维护一个消息队列应用程序的消…

让DroidVNC-NG支持中文输入

DroidVNC-NG支持控制端输入内容,但是仅支持英文字符,如果需要控制输入法软键盘输入中文的话就没办法了,经过摸索找到了解决办法。 这个解决办法有个条件就是让DroidVNC-NG成为系统级应用(这个条件比较苛刻)&#xff…

【JavaScript】一键入门

目录 一、JS起源 二、JS特点 三、JS组成部分 四、JS引入方式 一、JS起源 Java Script是由网景公司的Live Script发展而来的一种运行在客户端浏览器上的脚本语言,可以实现网页如文本内容、数据动态变化和动画特效等即浏览器与用户交互的这种体验。 二、JS特点 …

当了面试官才知道:做好这3点,面试成功率至少提高50%

关于辉哥: 资深IT从业者, 曾就职于阿里、腾讯、美团、中信科等互联网公司和央企; 两岁小男孩的父亲。 不定期分享职场 | 婚姻 | 育儿 | 个人成长心得体会 关注我,一起学习和成长。 最近作为公司社招面…

昇思25天学习打卡营第9天|使用静态图加速

一、简介: AI编译框架分为两种运行模式,分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行,但也支持手工切换为静态图模式。两种运行模式的详细介绍如下: (1)动态图: …

QQ等级评估源码+软件

今天,我将和大家探讨一个与直播、撸礼物相关的主题,它涉及到的是一种特殊的软件及其源码——QQ等级评估工具。在我们的生活中,直播已经成为了一种越来越流行的娱乐方式。不论是音乐会、电子竞技,还是日常生活分享,你都…

基于PHP的初中数学题库管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的初中数学题库管理系统 一 介绍 此初中数学题库管理系统基于原生PHP开发,数据库mysql,系统角色分为学生,教师和管理员。(附带参考设计文档) 技术栈:phpmysqlphpstudyvscode 二 功能 …

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

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

【图书推荐】CPython设计与实现“适合所有Python工程师阅读的书籍”

目录 一、图书推荐 |【CPython设计与实现】 1.1、书籍介绍 1.2、内容简介 1.3、适合哪些人阅读 1.4、作者译者简介 1.5、购买链接 一、图书推荐 |【CPython设计与实现】 "深入Python核心,揭秘CPython的设计智慧!📖 对于每一位热衷…

WPF/C#:BusinessLayerValidation

BusinessLayerValidation介绍 BusinessLayerValidation,即业务层验证,是指在软件应用程序的业务逻辑层(Business Layer)中执行的验证过程。业务逻辑层是应用程序架构中的一个关键部分,负责处理与业务规则和逻辑相关的…

【Java Web】Vite构建前端目录结构

目录 一、Vite概述 二、Vite构建Vue3工程化项目 三、ViteVue3项目目录结构 四、ViteVue3项目组件(SFC入门) 五、ViteVue3样式导入方式 六、ViteVue3响应式数据和setup语法糖 一、Vite概述 Vite是一种新型前端构建工具,能够显著提升前端开发体验;Vite结合…

Arduino IDE下载、安装和配置

文章开始先把我自己网盘里的安装包分享给大家,链接:https://pan.baidu.com/s/1cb2_3m0LnuSKLnWP_YoWPw?pwdwwww 提取码:wwww 里面一个是Arduino IDE的安装包,另一个是即将发布的版本。 第一个安装包打开直接按照我的步骤安装就…