Simulink从0搭建模型06-P7模型中结构体的使用

Simulink从0搭建模型06-P7模型中结构体的使用

  • 本节课学习内容
  • 1. 结构体的创建 Bus Creator(多输入单输出)
  • 2. 结构体的引用 Bus Selector(单输入多输出)
  • 3. 结构体的赋值 Bus Assignment
  • 4. 结构体对象的创建 Bus object
  • 5. 结构体数组的创建 Vector Concatenate(多输入单输出)
  • 6. 结构体数组的保存

本节课学习内容

b站视频【Simulink 0基础入门教程 P7 模型中结构体的使用 Bus Creator/Selector/Assignment】

在这里插入图片描述


1. 结构体的创建 Bus Creator(多输入单输出)

在这里插入图片描述

对比数组和结构体的模块,看起来很像,区别在于数组模块的输入必须为相同的数据类型,而结构体的数据类型可以不同。如下图为结构体的创建:

​ 输入一个学生结构体的4个信号:

  1. id
  2. mathScore
  3. EnglishScore
  4. ChineseScore

在这里插入图片描述

双击Bus Creator模块,可以看到线上默认的名字为signal1~signal4:

如何修改名字呢?用鼠标双击该线更改名称:

在这里插入图片描述

再次双击Bus Creator模块,发现线上名称已经更改了:

2. 结构体的引用 Bus Selector(单输入多输出)

我们输入有4个不同类型的数据,如果直接用一个Display显示结果会报错。

​ 验证:

在这里插入图片描述

报错原因:Display的输入口不能接收混合数据类型。

也就是说,一个Display不能显示不同的数据类型,那好办,我们就用多个Display显示。但是Bus Creator只有一个输出,怎么办?

所以就用到了Bus Selector模块(单输入多输出),来选择输出信号:

在这里插入图片描述

用Select把左边的信号添加到右边:

在这里插入图片描述

再比如:

在这里插入图片描述

3. 结构体的赋值 Bus Assignment

现在想要修改学生的信息。

  1. 添加Bus Assignment模块:

在这里插入图片描述

  1. 修改参数mathScore=100:

在这里插入图片描述

在这里插入图片描述

eg2:
在这里插入图片描述

4. 结构体对象的创建 Bus object

把一个学生的信息(id、mathScore、EnglishScore、ChineseScore)放在一个结构体对象里面。

为啥这么做?

双击打开Bus Selector模块,选择结构体对象输出类型:

先修改名称后再点Edit进入工作界面:

添加一个结构体对象,右侧更名为"StudentInfo"(点工具栏的+,Add Bus):

在这里插入图片描述

在结构体对象下面加成员:

在这里插入图片描述

最后创建的结构体对象如下:

在这里插入图片描述

关闭退出。

再更新一下"Refresh data types",同时记得勾选上Output as nonvirtual bus(作为非虚拟总线输出):

在这里插入图片描述

结构体对象创建效果图:

在Bus Creator模块的输出线上显示了对象名称为StudentInfo。

在这里插入图片描述

遇到bug:

​ 我创建好了名为MyInfo的结构体对象,运行报错:

在这里插入图片描述

​ 查找问题发现,在结构树下我所创建的输入顺序错了,导致上面的数据类型不匹配:

在这里插入图片描述

​ 调整顺序:

在这里插入图片描述

再次运行就不报错了:

在这里插入图片描述

5. 结构体数组的创建 Vector Concatenate(多输入单输出)

还记得前面我问的为啥要创建结构体对象了吧,在这里我们就明白了创建结构体对象的作用了,多个结构体对象可以构成一个结构体数组,方便我们管理学生信息。

创建5个学生的结构体(复制粘贴),然后用一个Vector Concatenate模块打包成一个5维结构体数组。

在这里插入图片描述

接下来,我们想要查看学生X的信息,也就是说先选择哪个学生,再选择该学生的信息。

  1. 用Selector模块选择是哪个学生:

在这里插入图片描述

  1. 用bus selector模块显示该学生的信息:

在这里插入图片描述

eg2:

在这里插入图片描述

6. 结构体数组的保存

最后,我们好不容易创建了一个结构体数组,把它保存一下,直接可以调用的。

在这里插入图片描述

在这里插入图片描述

存为.mat文件格式,自命名。

在这里插入图片描述

回到matlab打开的界面,就可以载入我们保存好的模型了。

在这里插入图片描述

-END-

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10分钟掌握FL Studio21中文版,音乐制作更高效!

FL Studio 21中文版是Image Line公司推出的一款深受欢迎的数字音频工作站软件,在音乐制作领域享有盛誉。这个版本特别针对中文用户进行了本地化处理,旨在提供更加便捷的用户体验和操作界面。本次评测将深入探讨FL Studio 21中文版的功能特点、使用体验及…

Java RMI

RMI - 安全篇 RMI分为三个主体部分: *Client-客户端*:客户端调用服务端的方法 *Server-服务端*:远程调用方法对象的提供者,也是代码真正执行的地方,执行结束会返回给客户端一个方法执行的结果。 *Registry-注册中心…

防火墙技术基础篇:配置主备备份的双机热备

防火墙技术基础篇:配置主备备份的双机热备 防火墙双机热备(High Availability, HA)技术是网络安全中的一个关键组成部分,通过它,我们可以确保网络环境的高可靠性和高可用性。下面我们一起来了解防火墙双机热备的基本原…

第二十三届中国科学家论坛盛大开幕,星医联董事长杨星荣获“十四五”科技创新先锋人物

2024年5月25-26日,第二十三届中国科学家论坛在北京召开,北京星医联科技有限公司(以下简称“星医联”)董事长杨星女士受邀出席并荣获“十四五科技创新先锋人物”称号。同时星医联专利“一种靶向协同降脂的纳米双药制备及应用”荣获…

[CVPR-24] HUGS: Human Gaussian Splats

本文提出一种新的数字人表征Human Gaussian Splats (HUGS),可以实现新姿态和新视角生成;本文提出一种新的前向形变模块(forward deformation module),在标定空间基于Gaussians表征数字人,并基于LBS学习如何…

从 ASCII 到 UTF-8 - Unicode 码的诞生与实现

前言:最近我在整理过往笔记时,发现涉及到了 UTF-8、Unicode 的相关内容,相信大家中的很多人和之前的我一样,在过去的很长一段时间里,并没有搞清楚什么是 Unicode、什么是 UTF-8,于是就有了这篇文章&#xf…

SSL证书:守护个人信息安全的坚固盾牌

在数字化浪潮汹涌的今天,我们的个人信息如同一座座宝藏,吸引着不法分子的贪婪目光。数据泄露事件频发,让信息安全问题日益凸显。而在这个信息爆炸的时代,如何保护我们的个人信息安全,成为了一个亟待解决的问题。幸运的…

【第三节】类的构造和析构函数

目录 一、数据成员的初始化 二、构造函数 2.1 什么是构造函数 2.2 构造函数的注意事项 三、析构函数 四、带参数的构造函数 五、缺省构造函数 六、构造函数初始化列表 七、拷贝构造函数和调用规则 八、深拷贝和浅拷贝 九、总结 一、数据成员的初始化 定义普通变量&am…

java智慧工厂制造生产管理MES系统saas模式Java+ idea+ uniapp全套MES系统源码,多端展示

java智慧工厂制造生产管理MES系统saas模式Java idea uniapp全套MES系统源码,多端展示 MES 系统源码(生产制造执行系统)能够帮助企业实现全生产过程的可视化,数据分析智能化、构建高效智能工厂,MES系统通过控制指令、人…

大气污染溯源算法及其技术实现

污染溯源基础概念知识 大气污染溯源是指识别并追踪污染物的来源及其传输过程,以确定造成大气污染的根本原因和污染物传播路径的技术和方法。这对于制定有效的控制和减轻污染策略至关重要。大气污染的溯源主要涉及以下几个方面: 污染源识别:…

Facebook开户 | 如何检查公共主页的状态

想要了解你的Facebook公共主页的状态吗? Facebook公共主页是让广告主与粉丝互动、传播信息的绝佳平台,但是大家知道如何检查并维护自己的主页状态吗?别担心,Facebook提供了一系列简单易用的工具来帮助大家实现这一目标。 *Page Q…

RedHat9网络配置设计

目录 一、实验目的 二、实验过程 1、配置新网络接口 2、多网卡配置网络 3、网络接口的绑定,进行远程访问 4、配置网络接口的组合 一、实验目的 本次实验的目的是使用nmcli命令工具配置网络,ens160配置多个网卡,进行网络接口的绑定与组合…

一文搞懂Java8 Lambda表达式、方法引用

Lambda表达式介绍 Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。通过Lambda表达式,可以替代我们以前经常写的匿名内部类来实现接口。Lambda表达式本质是一个匿名函数; 体验Lambda表达式 我们通过一个小例子来体验下L…

单元测试框架Pytest的基本操作

Pytest基本操作 1. 详解1.1 命名规则:1.2 自定义查找规则:1.3 3种运行方式1.4 执行顺序2. 断言2.1 定义2.2 断言的规则3. mark3.1 mark的作用3.2 mark的标记方式3.3 注册标签名3.4 skip跳过标记4. pytest的参数化5. pytest的夹具(fixture测试夹具)5.1. 作用5.2. 夹具应用场…

Java网络编程:UDP通信篇

目录 UDP协议 Java中的UDP通信 DatagramSocket DatagramPacket UDP客户端-服务端代码实现 UDP协议 对于UDP协议,这里简单做一下介绍: 在TCP/IP协议簇中,用户数据报协议(UDP)是传输层的一个主要协议之一&#xf…

LeetCode hot100-57-G

17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。不会,放IDEA里执行了一下大概理解了流程 …

《Ai企业知识库》-rasa-初步使用

根据上面的环境准备之后: 《Ai企业知识库》-模型实践-rasa开源学习框架-搭建简易机器人-环境准备(针对windows)-02-CSDN博客 基础的使用: rasa项目初始化: rasa init 首先进入目标文件夹 在dos窗口(目标文件夹下&#xff09…

10Django项目--用户管理系统--改

对应视频链接点击直达 10Django项目--用户管理系统--改 对应视频链接点击直达改a,本质b,修改(更新) 页面相关a,index页面新增操作按钮b,修改(更新)页面c,路由和函数 OVER,不会有人不会吧不会的加Q139400651…

pdf只要其中一页 pdf只要第一页怎么办 pdf只要前几页怎么弄

在现代办公环境中,PDF文件已经成为我们日常工作中不可或缺的一部分。然而,有时我们可能只需要PDF文件中的某一页,而不是整个文件。这时,我们该如何操作才能只获取所需的那一页呢?本文将详细操作方法,帮助大…

全面盘点多模态融合算法及应用场景

关注作者,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕博,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人 多…