0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于如何定义结构体的分析和介绍

MATLAB 来源:djl 作者:柚籽 2019-09-16 10:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们来聊聊结构体。

E-Coder 在做自动代码生成的时候,在默认情况下,它会把所有的输入信号定义为一个结构体_U,把所有的输出信号定义为另一个结构体_Y,把所有的参数定义为一个结构体_P。虽然这样的结构体不一定是我们想要的,但至少,说明自动代码生成是支持结构体的。

本文并不解决“哪些情况下应该使用结构体”这个问题,这里来说说:

怎么实现我想要的结构体?

从之前的文章中我们说到,自动生成代码时,想让各种信号、参数定义和声明采用什么样的方式,都是通过数据对象 (Data Object) 来实现的。那,如果我希望把信号 a ,b,c 或者参数 k1,k2,k3 定义为一个结构体,该怎么实现呢?

构造结构体

要得到:

typdef struct {

double k1;

double k2;

double k3;

} kk_type;

kk_type kk={2.0,3.0,4.0};

怎么做:

设置数据对象的Storage Class属性为 Struct

或者使用Simulink Bus来定义新的结构体类型 outyy

举个例子

1.新建如下的简单模型并生成代码

先看一下 “正常的” 不使用结构体的情况:

关于如何定义结构体的分析和介绍

看下面这张图,定义好了对应的信号数据对象 (Simulink.Signal) u1、u2、u3、yy1、yy2、yy3,与参数数据对象(Simulink.Parameter) k1、k2、k3。

通过名字对应以及关联操作,实现关联,也就是上图中的蓝色小叉子。具体如何操作以前介绍过。

关于如何定义结构体的分析和介绍

Ctrl + B,生成代码:

关于如何定义结构体的分析和介绍

2.把参数 k1、k2、k3 放在指定的结构体 kk 里

选中数据对象 k1,k2,k3,把 StorageClass 都设置为 Struct(Custom),并指定结构体名字为 kk。这样在自动生成代码时,这几个参数会自动放入结构体 kk 中。

关于如何定义结构体的分析和介绍

看到,在生成的代码里,得到一个新的结构体类型 kk_type:

关于如何定义结构体的分析和介绍

并且,根据这几个参数的值,得到了结构体变量 kk:

关于如何定义结构体的分析和介绍

3.把信号 yy1、yy2、yy3 也放在一个输出结构体里

刚才的参数结构体是通过设置数据对象的 StorageClass 为 Struct 来实现的。而现在,以信号为例,使用另一种方式来实现这个目的: Simulink Bus。

a.首先,通过 Simulink Bus 来定义一个新的结构体数据类型 outyy:

关于如何定义结构体的分析和介绍

定义这个 Bus 的结构,里面的成员名就是最后出现在代码里的名字:

关于如何定义结构体的分析和介绍

那么此时,一个新的数据类型就构造好了。将来在生成代码时,这个新的结构体类型就是这样:

关于如何定义结构体的分析和介绍

数据类型定义好了,接着,我们就要来用它了。

b. 把 Simulink 的三个输出信号使用 Bus Creator 模块变成总线信号,取名叫 outStruct:

关于如何定义结构体的分析和介绍

设置这个 Bus Creator 模块的数据类型为刚定义好的结构体 outyy。另外,还得勾选它为非虚拟总线。那么这样,它在生成代码时,就会被当做结构体来看:

关于如何定义结构体的分析和介绍

c. 如同之前每一个 double\single 类型的信号一样,接着,也为 outStruct信号定义一个同名的数据对象 outStruct。

在 Simulink 模型上的 outStruct 信号线的属性界面上勾选关联到这个数据对象,得到蓝色小叉子。

关于如何定义结构体的分析和介绍

4. 最后生成代码

关于如何定义结构体的分析和介绍

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7314

    浏览量

    93968
  • 数据类型
    +关注

    关注

    0

    文章

    237

    浏览量

    14108
  • 结构体
    +关注

    关注

    1

    文章

    131

    浏览量

    11298
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    共用声明

    还要考虑内存对齐的问题。 共用可以类似结构一样来定义和声明,但是共用还可以允许不带名字: union { int i; ch
    发表于 12-05 07:24

    关于NFC镍锌铁氧体片的介绍

    关于NFC镍锌铁氧体片的介绍
    的头像 发表于 12-04 10:52 42次阅读
    <b class='flag-5'>关于</b>NFC镍锌铁氧体片的<b class='flag-5'>介绍</b>

    为什么不建议用匿名结构

    说起匿名结构,想必大家第一感觉就是看着好高大上的名字,但实际上也就那样。 typedef struct { union { struct { uint8_t bit_0:1
    发表于 12-04 07:39

    使用typede的f优势介绍

    可以让代码更加清晰简洁使用typedef,我们可以在定义一个结构、联合、枚举变量时,省去关键字struct,让代码更加简洁。 typedef struct student { char
    发表于 11-26 08:15

    C语言结构使用

    有时候需要将不同类型的数据组合为一个整体,以便于引用。例如,一名学生有学号、姓名、性别、年龄等属性,如果针对每个属性都单独定义一个变量,那么当有多名学生时变量就难以分清。结构就是用来管理不同类
    发表于 11-12 08:30

    定义IO初始化结构

    由上述IOPORT相关功能的枚举类型我们可以知道,在对IOPORT模块进行初始化时需要根据情况配置它们。因此我们定义一个IOPORT初始化的结构类型IOPORT_Init_t,它的成员包括了由上述所有枚举类型所声明的变量,因此
    的头像 发表于 07-16 16:26 1105次阅读

    推进电机端盖结构的抗冲击分析及优化

    摘要:高转矩密度、强抗冲击性和低噪声已经成为舰船用推进电机三大特征,以某推进电机的端盖结构分析研究对象,以有限元数值仿真分析为手段,分析了该结构
    发表于 06-23 07:12

    渗压计在混凝土结构中的安装指南

    在现代土木工程和岩土工程中,渗压计是监测混凝土结构体内孔隙水压力变化的重要工具。南京峟思公司生产的渗压计因其高精度和可靠性而被广泛应用于各种工程监测项目中。一、渗压计在混凝土结构中的应用价值渗压计
    的头像 发表于 05-28 10:55 381次阅读
    渗压计在混凝土<b class='flag-5'>结构</b><b class='flag-5'>体</b>中的安装指南

    LASCAD应用:动态多模分析和调Q运转模拟

    目录 动态多模分析和调Q运转模拟1 1.介绍1 2.激光器连续输出时输出功率,模式竞争,和光束质量的模拟2 3.Q开关运转模拟6 4.光阑影响模拟10 5.结论12 1.介绍 动态多模分析
    发表于 05-19 08:52

    GLAD应用:全息光栅模拟

    用于模拟全息记录介质中形成的梯度折射率分布。全息结构一旦形成,就可以在传输过程中将一束入射光波逐渐转换成形成体全息结构的另一束光波。两束光波之间的能量传递转换效率与全息
    发表于 05-15 09:32

    C语言中结构与联合体的深度解析:内存布局与应用场景

    在于对内存的极致操控。结构构建数据实体,联合体实现内存复用,二者的组合使用能创造出强大的数据结构。掌握它们的底层原理,配合内存分析工具(如Valgrind、GDB),将助你在嵌入式开
    发表于 04-08 09:18

    连接器元件的定义结构特点

    在现代电子设备中,连接器元件作为实现电路连接或断开的重要组件,扮演着不可或缺的角色。它们通过插头和插座的配合,完成了电信号或电源的传输,而无需进行永久性连接。本文将深入探讨连接器元件的定义结构特点以及其在电子设备中的应用,以期为相关领域的研究者和工程师提供全面的技术参考
    的头像 发表于 02-05 16:51 1040次阅读

    JCMsuite应用:散射的光学手性响应

    在JCMsuite中,利用光学手性的形式和内置的手性参量可以计算光散射的手性响应。结果表明,时间谐波光学手性密度服从局部连续性方程[1]。这使得手性行为的分析类似于研究电磁能量的标准消光实验。 在
    发表于 12-25 15:37

    镁合金微观结构分析:EBSD制样技术的应用与经验探讨

    电子背散射衍射(EBSD)技术在材料科学领域,电子背散射衍射(EBSD)技术以其卓越的晶体微区取向和结构分析能力,已经成为全球研究者不可或缺的工具。它不仅能够提供关于材料微观组织结构
    的头像 发表于 12-19 12:35 1084次阅读
    镁合金微观<b class='flag-5'>结构</b><b class='flag-5'>分析</b>:EBSD制样技术的应用与经验探讨

    JCMsuite应用:散射的光学手性响应

    在JCMsuite中,利用光学手性的形式和内置的手性参量可以计算光散射的手性响应。结果表明,时间谐波光学手性密度服从局部连续性方程[1]。这使得手性行为的分析类似于研究电磁能量的标准消光实验。 在
    发表于 12-18 13:41