主要内容

导入具有条件编译维度长度的参数数据

假设外部代码有条件地为查找表和断点集数据分配内存,并根据指定为#定义宏。这个例子展示了如何生成导入外部全局数据的代码。

创建外部代码文件

保存断点集数据的定义T1Break和查找表数据T1Data在当前文件夹中的一个名为ex_vec_symdim_src.c.这些全局变量有9个或11个元素,具体取决于宏的值bpLen

#如果bpLen==11双T11双突破[bpLen]={-5.0,--4.0,--3.0,--4.0,--3.0,--3.0,--2.0,--2.0,--2.0,--2.0,--3.0,--2.0,--2.0,--2.0,--3.0,--2.0,--2.0,--3.0,--2.0,--2.0,--2.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1.0,--1-1.0,0.0,1.0,2.0,3.0,4.0};双T1Data[bpLen]={-0.99,-0.98,-0.96,-0.76,0.0,0.76,0.96,0.98,0.99};#

将变量声明和宏定义保存在当前文件夹中的文件中ex_vec_symdim_decs.h

#定义bpLen 11外部双T1Break[bpLen];外部双T1Data[bpLen];

探索并配置示例模型

打开示例模型rtwdemo\U配置接口

开放式系统(“rtwdemo_configinterface”)设置参数(“rtwdemo_配置接口/表1”,“DataSpecification”,“表和断点”);

打开“Table1块”对话框。该块引用变量,T1DataT1Break,在模型工作区中。这些变量用11个元素存储查找表和断点集数据。

在命令提示下,将变量转换为金宝appSimulink.参数物体。

mws=获取参数(“rtwdemo_configinterface”,“模型工作区”);T1Data=mws.getVariable(“T1Data”);T1Break=mws.getVariable(“T1Break”);T1Data = 金宝appSimulink.Parameter (T1Data);T1Break = 金宝appSimulink.Parameter (T1Break);

在命令提示下,创建一个金宝appSimulink.参数对象来表示自定义宏bpLen

bpLen=Si金宝appmulink.Parameter(11);bpLen.Min=9;bpLen.Max=11;bpLen.DataType=“int32”;bpLen.CoderInfo.StorageClass=“习俗”;bpLen.CoderInfo.CustomStorageClass=“ImportedDefine”;bpLen.CoderInfo.CustomAttributes.HeaderFile=“ex_vec_symdim_decs.h”

使用bpLen设置查找表和断点集数据的维度。通过选择配置参数,配置模型以启用符号维度允许符号尺寸规格

T1Data。尺寸=“[1 bpLen]”;T1Break。尺寸=“[1 bpLen]”; 设置参数(“rtwdemo_configinterface”,“AllowSymbolicDim”,“开”);

设置配置参数>代码生成>自定义代码>其他生成信息>源文件ex_vec_symdim_src.c

set_param (“rtwdemo_configinterface”,“自定义源”,“ex_vec_symdim_src.c”)

配置对象以从外部代码导入数据定义。

mws.assignin(“T1Data”,T1Data);mws.assignin(“T1Break”, T1Break);厘米= coder.mapping.utils.create (“rtwdemo_configinterface”);setDataDefault(cm,“ModelParameters”,“存储类”,“默认”); setModelParameter(cm,“表1”,“存储类”,“模型默认”); setModelParameter(cm,“表”,“存储类”,“模型默认”); setModelParameter(cm,“T1Data”,“存储类”,“ImportFromFile”,“头文件”,“ex_vec_symdim_decs.h”); setModelParameter(cm,“T1Break”,“存储类”,“ImportFromFile”,“头文件”,“ex_vec_symdim_decs.h”);

生成并检查代码

从模型生成代码。

生成的代码算法在模型中生成的文件中的函数rtwdemo_configinterface.c.算法通过T1Break,T1Data,bpLen作为执行表查找的函数的参数值。在这种情况下,bpLen控制函数使用的二分查找的上界。

有关符号标注的详细信息,请参见在生成的代码中实现数组大小的维度变量

相关的话题