从每个子系统生成可重用的代码
在基于模型的设计中,将低效率的重复算法转化为紧凑的形式,为每个子系统使用。为每个子系统中重复执行模拟时间步上的每个元素或子数组输入信号或面具参数数组。此外,降低模型复杂度,您还可以生成相同的可重用代码为每个子系统通过配置可重用的功能。您必须配置的面具和块参数相同的子系统。代码生成器执行校验和来确定子系统是相同的和可重用的代码。如果可重用的代码,代码生成器产生的单一实例共享的可重用代码相同的子系统。
这个例子展示了如何为每个子系统生成可重用的代码,执行相同的处理在各自的输入。
示例模型
从这个示例中生成代码ForEachReuse
模型中提供提高代码重用使用for - each子系统。
为每个子系统模型包含三个向量魔法石,第1章
,SS2向量
,向量SS3
应用相同的处理每个标量元素的向量在各自的输入信号。例如,向量SS3
子系统包含这些块。
生成一个共享函数的三个子系统,子系统的输入信号维数必须相同。为向量魔法石,第1章
和向量SS3
,设置分区尺寸和宽度1
。为SS2向量
也设置输入信号维度1
插入一个数学函数块转置1-by-8行向量8-by-1列向量。子系统的输出转换回一个1-by-8行向量,使用第二个数学函数块。
剩下的每个子系统矩阵魔法石,第1章
和SS2矩阵
使用相同的算法和过程矩阵信号有相同的输入信号维度设置。
生成和检查代码
配置子系统为可重用的功能,打开参数对话框。在代码生成选项卡,设置函数包装来
可重用的功能
。构建模型和生成代码,出版社Ctrl + B。
# # #开始构建过程:ForEachReuse # # #成功完成构建过程:ForEachReuse模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ForEachReuse代码生成和编译。代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米9.8365秒
代码生成器生成一个单一的输出函数VectorProcessing
在VectorProcessing.c
。
*输出迭代器系统和更新:* < Root > /向量魔法石,第1章的*“SS2 < Root > /向量”*“< Root > /向量SS3”* /空白VectorProcessing (int32_T NumIters, const real_T rtu_In1 [10], real_T rty_Out1 [10], DW_VectorProcessing_T localDW[10]){/ *本地抓DWork变量* / int32_T ForEach_itr;real_T rtb_Out1_CoreSubsysCanOut;
有一个输入参数的函数NumIters
表明独立标量的数量为每个子系统,每个块的过程。这个函数被调用的三倍ForEachReuse.c
与参数NumIters
设置为10
,8
,7
分别。
代码生成器还生成一个输出函数矩阵魔法石,第1章
和SS2矩阵
子系统MatrixProcessing.c
即两次吗ForEachReuse.c
。
*输出迭代器系统和更新:* < Root > /矩阵魔法石,第1章的*的SS2 < Root > /矩阵* /空白MatrixProcessing (int32_T NumIters, const real_T rtu_In1 [32], real_T rty_Out1 [32], DW_MatrixProcessing_T localDW[2]){/ *本地抓DWork变量* / int32_T ForEach_itr;real_T rtb_MathFunction_h_0;int32_T我;int32_T rtb_MathFunction_h_tmp;int32_T tmp;