文档

向量操作优化

这个例子展示了Simulink®Coder™如金宝app何通过设置块输出来优化生成的代码,块输出为标量生成向量,例如Mux、Sum、Gain和Bus。这种优化通过用局部变量替换临时局部数组来减少堆栈内存。

示例模型

在模型中,rtwdemo_VectorOptimization,增益块的输出G1G2是矢量信号tmp1tmp2.这些向量的宽度是10。

模型=“rtwdemo_VectorOptimization”;open_system(模型);set_param(模型,“SimulationCommand”“更新”

生成代码

为构建和检查过程创建一个临时文件夹(在系统临时文件夹中)。

currentDir = pwd;[~, cgDir] = rtwdemodir ();

构建的模型。

rtwbuild(模型)
###成功完成模型的构建过程:rtwdemo_VectorOptimization

优化的代码在rtwdemo_VectorOptimization.c.的信号tmp1tmp2是局部变量rtb_tmp1rtb_tmp2

用= fullfile (cgDir,“rtwdemo_VectorOptimization_grt_rtw”...“rtwdemo_VectorOptimization.c”);rtwdemodbtype(用“/ *模型步骤”/ *初始化模型的1 0);
/*模型步长函数*/ void rtwdemo_VectorOptimization_step(void) {int32_T i;real_T rtb_tmp2;real_T rtb_tmp1;real_T rtb_Sum3;For (i = 0;我< 10;i++) {/* Gain: '/G2'合并:* UnitDelay: '/X2' */ rtb_tmp2 = 0.3 * rtwdemo_vectoroptimization_db . x2_dstate [i];/*增益:'/G1'合并:* UnitDelay: '/X1' */ rtb_tmp1 = 0.2 * rtwdemo_vectoroptimization_db . x1_dstate [i]; /* rtwdemo_vectoroptimization_db . x1_dstate [i];/* Sum: '/Sum3'合并:* Gain: '/G3' * Inport: '/In2' * Sum: '/Sum1' * Sum: '/Sum2' * UnitDelay: '/X3' */ rtb_Sum3 = ((rtwdemo_VectorOptimization_U. txt)In2[i] - 0.4 * rtwdemo_vectoroptimization_db . x3_dstate [i]) - rtb_tmp2) - rtb_tmp1;/* Outport: '/Out2' */ rtwdemo_VectorOptimization_Y. txtOut2[我]= rtb_Sum3; /* Update for UnitDelay: '/X3' */ rtwdemo_VectorOptimization_DW.X3_DSTATE[i] = rtb_tmp2; /* Update for UnitDelay: '/X2' */ rtwdemo_VectorOptimization_DW.X2_DSTATE[i] = rtb_tmp1; /* Update for UnitDelay: '/X1' */ rtwdemo_VectorOptimization_DW.X1_DSTATE[i] = rtb_Sum3; } }

关闭模型和代码生成报告。

bdclose rtwdemoclean(模型);cd (currentDir)

相关的话题