生成乱序数组 代码_Simulink模型生成代码详解(2)

本文摘要:

这篇文章主要介绍信号对象(Simulink.Signal和Simulink.Parameter)的不同属性对代码生成的影响。

一 Simulink.Signal

根据上一篇文章的介绍,如果我们想要控制模型中,信号线上信号名的代码生成,可以在信号线上设置信号名,并关联到Simulink.Signal的对象。

定义一个Simulink.Signal的对象的方法很简单,首先要确定这个信号的名称,比如我们要定义一阶滤波器的输入信号x,那我们只要在matlab的命令窗口输入:

x = Simulink.Signal

然后就可以看到,Matlab帮我们定义了一个名叫x的Simulink.Signal对象,除了名字是我们指定的,其他都是属性都是默认的。

51f31c043dab3da56b58d021e84f3c12.png

对于代码生成,我们首先要根据该信号的实际情况,定义该信号的数据类型(必须),维度(强烈推荐指定,默认值-1表示维度根据模型实际情况默认推导),初始值(非0的初始值必须指定,个人也推荐指定初始值),采样时间(-1表示默认为根据模型设置的步长相等,这边除了模型的输入信号推荐指定采样时间外,模型内部的变量可以设为-1),最大最小值(模型大的输入和输出信号推荐根据实际情况指定,内部变量如无特殊需要可以不指定),信号意义描述(可选),信号单位(可选),维度模式(这里强烈推荐都设为Fixed),复数的设置(这里强烈推荐都设为real)

所以一个Simulink.Signal对象除了基本信息完整的定义如下:

bb9be535cb0a191e9cbc766ed879fe8e.png

接下来就是本讲的重点,CoderInfo的设置。

默认的CoderInfo被设置为’Auto’,这代码代码生成的形式完全按照系统默认的形式生成:

a4a88eba9d83a327a9af67bdc171e69b.png

我们在matlab的工作空间(workspace)双击x,打开设置界面,然后在Storage class的下拉菜单中,可以看到Simulink.Signal可以选择的Storageclass,选择不同的Storage class,生成代码的形式也会不一样,接下来重点说一下常用的几种Storage class

59d92fccad4ddebc265dd0ea0fac8581.png

1.1 ExportGlobal

该类型表示在生成的代码中会有该变量的声明以及定义。通常应用的场景是这个变量就是在这个模型中算出的,所以需要完整的声明和定义,这是最常用的一种store class。选择ExportGlobal后,会出来两种属性,一个是Alias,这个表示我们可以让这个变量在代码中以Alias中定义的别名声明和定义。Aligment这个属性就保持-1,不用去改了。

3eee94ee5ba146031e6bbd70c52d9f23.png

具体定义的语句为,其他几种Storage class也是用类似的语句去定义,后面就不再描述了。

75993ddde8e9cdc884bfac41feab2e7f.png

接下来我们看一下实际生成的代码,在对应的.h文件中有声明,.c文件中有定义,并且使用的时候就是我们定义的名称x。

d1be6615527cf98aad2b71b93fcfb72e.png

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值