删除代码块对计算结果没有影响
这个例子展示了如何通过删除代码生成器生成的代码优化代码,对计算结果没有影响。这种优化:
提高执行速度。
减少了罗消费。
例子
在模型中rtwdemo_blockreduction,一块获得的价值1.0
在尺寸和外港块之间。
模型=“rtwdemo_blockreduction”;open_system(模型);
生成代码
创建一个临时文件夹的建立和检验过程。
currentDir = pwd;[~,cgDir] = rtwdemodir ();
构建的模型。
set_param(模型,“BlockReduction”,“关闭”);rtwbuild(模型)
# # #开始构建过程模型:rtwdemo_blockreduction # # #成功完成构建过程模型:rtwdemo_blockreduction
这是代码rtwdemo_blockreduction.c
。
用= fullfile (cgDir,“rtwdemo_blockreduction_ert_rtw”,“rtwdemo_blockreduction.c”);rtwdemodbtype(用“/ *模型阶跃函数* /”,…“/ *模型初始化函数* /”1 0);
/ *模型阶跃函数* /空白rtwdemo_blockreduction_step (void){/ *外港:“< Root > /着干活”包含:*获得:“< Root > /增益”*尺寸:“< Root > / In1”* / rtwdemo_blockreduction_Y。着干活= 1.0 * rtwdemo_blockreduction_U.In1;}
启用优化
打开配置参数对话框。
选择块减少。这种优化是默认。
此外,使用命令行API启用优化。
set_param(模型,“BlockReduction”,“上”);
生成代码的优化
rtwbuild(模型)
# # #开始构建过程模型:rtwdemo_blockreduction # # #成功完成构建过程模型:rtwdemo_blockreduction
这是优化的代码rtwdemo_blockreduction.c
。
用= fullfile (cgDir,“rtwdemo_blockreduction_ert_rtw”,“rtwdemo_blockreduction.c”);rtwdemodbtype(用“/ *模型阶跃函数* /”,…“/ *模型初始化函数* /”1 0);
/ *模型阶跃函数* /空白rtwdemo_blockreduction_step (void){/ *外港:“< Root > /着干活”包含:*尺寸:“< Root > / In1”* / rtwdemo_blockreduction_Y。着干活= rtwdemo_blockreduction_U.In1;}
因为输入信号乘以一个值1.0
不会影响计算结果,代码生成器排除了获得从生成的代码块。关闭模型和清理。
bdclose rtwdemoclean(模型);cd (currentDir)