文档

通过组合多个优化生成的代码构造

此示例展示了代码生成器如何组合循环。生成的代码使用构造来表示各种建模模式,例如矩阵信号或迭代器块。使用数据依赖分析,代码生成器组合构造以减少静态代码大小和运行时分支。

优化的好处循环是:

  • 减少ROM和RAM的消耗。

  • 提高执行速度。

循环建模模式

在模型中,rtwdemo_forloop, Switch块和MATLAB函数块表示构造。在三机一体“块参数”对话框中港维参数设置为10

生成代码

模型不包含跨循环迭代。因此,代码生成器合并循环变成一个循环。打开金宝app仿真软件编码器嵌入式编码器然后,生成和查看代码。

已成功完成模型:rtwdemo_forloop的构建过程

生成的文件,rtwdemo_forloop.c,包含单循环。

/*模型步长函数*/ void rtwdemo_forloop_step(void) {int32_T k;/ * MATLAB函数:根> < / Accum ' * / / * MATLAB函数“Accum”:“< S1 >: 1 ' */ /* '< S1 >: 1:3 ' */ /* '< S1 >: 1:4‘* / rtwdemo_forloop_Y。着干活= 0.0;/* ':1:5' */ for (k = 0;k < 10;k++) {/* Switch: '/Switch'合并:*增益:'/G1' *增益:'/G3' * Inport: '/In1' * Sum: '/Sum1' * Sum: '/Sum2' * UnitDelay: '/Delay' */ if (3.0 * rtwdemo_forloop_U。In1[k] >= 0.0) {rtwdemo_forloop_DW. In1[k] >= 0.0) {Delay_DSTATE [k] = rtwdemo_forloop_U。三机一体[k] - rtwdemo_forloop_DW.Delay_DSTATE[k]; } else { rtwdemo_forloop_DW.Delay_DSTATE[k] = (rtwdemo_forloop_DW.Delay_DSTATE[k] - rtwdemo_forloop_U.In1[k]) * 5.0; } /* End of Switch: '/Switch' */ /* MATLAB Function: '/Accum' */ /* ':1:5' */ /* ':1:6' */ rtwdemo_forloop_Y.Out1 += ((real_T)k + 1.0) + rtwdemo_forloop_DW.Delay_DSTATE[k]; } }

关闭模式。

相关的话题