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

    文章

    7349

    浏览量

    95023
  • 数据类型
    +关注

    关注

    0

    文章

    238

    浏览量

    14233
  • 结构体
    +关注

    关注

    1

    文章

    131

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于MT6901的直线DEMO介绍

    关于MT6901的直线DEMO介绍
    的头像 发表于 01-30 10:54 769次阅读
    <b class='flag-5'>关于</b>MT6901的直线DEMO<b class='flag-5'>介绍</b>

    【产品介绍】Altair OptiStruct结构分析优化软件

    AltairOptiStruct支持结构分析优化OptiStruct是一款久经考验且成熟的现代化结构求解器,它可为线性和非线性分析提供综合、准确且可扩展的解决方案,适用于多个学科,包括
    的头像 发表于 01-06 17:56 2129次阅读
    【产品<b class='flag-5'>介绍</b>】Altair OptiStruct<b class='flag-5'>结构</b><b class='flag-5'>分析</b>优化软件

    10个例子代码,C语言结构的高级

    (\"Flag 3: %dn\", f.flag3); return 0; } 在这个例子中,我们使用了位字段来定义一个结构,其中每个成员变量都指定了所占用的位数。这样
    发表于 01-05 06:32

    一个经典的结构和联合体共用的实例

    连用例子: 1、首先定义一个结构,内部包含联合体,如下; #define MAX_SOFTKEY_LEN 4 typedef enum { ENUM_TRANSFER
    发表于 12-16 07:14

    结构声明与定义

    符号整数表示 } 这样,我们就相当于描绘好了一个框架,以后要用的话直接定义一个这种类型的变量就好了。 2、定义 我们刚刚申请了一个名叫Info的结构类型,那么理论上我们可以像声
    发表于 12-11 07:52

    typedef结构使用

    虽然结构的出现能够让我们有一个更科学的数据结构来管理数据,但是每次使用结构都需要struct...,未免显得有些冗长和麻烦。有了type
    发表于 12-08 07:04

    共用声明

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

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

    关于NFC镍锌铁氧体片的介绍
    的头像 发表于 12-04 10:52 559次阅读
    <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 1571次阅读

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

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