假设外部代码有条件地为查找表和断点集数据分配内存,并根据指定为#定义
宏。这个例子展示了如何生成导入外部全局数据的代码。
保存断点集数据的定义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块”对话框。该块引用变量,T1Data
和T1Break
,在模型工作区中。这些变量用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
控制函数使用的二分查找的上界。
有关符号标注的详细信息,请参见在生成的代码中实现数组大小的维度变量.