主要内容

矢量运算优化

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

示例模型

在模型中,rtwdemo_VectorOptimization,增益块的输出G1而且G2矢量信号tmp1而且tmp2.这些向量的宽度是10。

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

生成代码

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

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

构建模型。

slbuild(模型)
# # #开始构建过程:rtwdemo_VectorOptimization # # #成功完成构建过程:rtwdemo_VectorOptimization模型建立目标:总结构建模型重建行动的理由  ============================================================================================================ rtwdemo_VectorOptimization代码生成和编译。代码生成信息文件不存在。构建1 / 1模型(0个模型已经更新)构建持续时间:0h 0m 10.998s

优化的代码已经导入rtwdemo_VectorOptimization.c.的信号tmp1而且tmp2局部变量是rtb_tmp1而且rtb_tmp2

cfile = fullfile(cgDir,“rtwdemo_VectorOptimization_grt_rtw”...“rtwdemo_VectorOptimization.c”);rtwdemodbtype(用'/*模拟步骤'/*模型初始化, 1, 0);
/*模型步长函数*/ void rtwdemo_VectorOptimization_step(void) {real_T rtb_Sum3_j;real_T rtb_tmp1_a;real_T rtb_tmp2_j;int32_T我;For (i = 0;I < 10;i++){/*增益:'<根>/G2'合并:* UnitDelay: '<根>/X2' */ rtb_tmp2_j = 0.3 * rtwdemo_vectoroptimization_dww . x2_dstate [i];* UnitDelay: '/X1' */ rtb_tmp1_a = 0.2 * rtwdemo_vectoroptimization_dww . x1_dstate [i];/* Sum: '<根>/Sum3'合并:*增益:'<根>/G3' *输入:'<根>/In2' * Sum: '<根>/Sum1' * Sum: '<根>/Sum2' * UnitDelay: '<根>/X3' */ rtb_Sum3_j = ((rtwdemo_VectorOptimization_U。In2[i] - 0.4 * rtwdemo_vectoroptimization_dww . x3_dstate [i]) - rtb_tmp2_j) - rtb_tmp1_a;/* Outport: '/Out2' */ rtwdemo_VectorOptimization_Y. Outport: '/Out2'Out2[i] = rtb_Sum3_j; /* Update for UnitDelay: '/X3' */ rtwdemo_VectorOptimization_DW.X3_DSTATE[i] = rtb_tmp2_j; /* Update for UnitDelay: '/X2' */ rtwdemo_VectorOptimization_DW.X2_DSTATE[i] = rtb_tmp1_a; /* Update for UnitDelay: '/X1' */ rtwdemo_VectorOptimization_DW.X1_DSTATE[i] = rtb_Sum3_j; } }

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

bdclose rtwdemoclean(模型);cd (currentDir)

相关的话题