主要内容

删除代码块对计算结果没有影响

这个例子展示了如何通过删除代码生成器生成的代码优化代码,对计算结果没有影响。这种优化:

  • 提高执行速度。

  • 减少了罗消费。

例子

在模型中rtwdemo_blockreduction,一块获得的价值1.0在尺寸和外港块之间。

模型=“rtwdemo_blockreduction”;open_system(模型);

生成代码

创建一个临时文件夹的建立和检验过程。

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

构建的模型。

set_param(模型,“BlockReduction”,“关闭”);slbuild(模型)
# # #开始构建过程:rtwdemo_blockreduction # # #成功完成构建过程:rtwdemo_blockreduction模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = rtwdemo_blockreduction代码生成和编译。代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米10.804秒

这个代码的代码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;}

启用优化

  1. 打开配置参数对话框。

  2. 如果块减少复选框没有被选中,选中它。

另外,使用命令行API启用优化。

set_param(模型,“BlockReduction”,“上”);

生成代码的优化

slbuild(模型)
# # #开始构建过程:rtwdemo_blockreduction # # #成功完成构建过程:rtwdemo_blockreduction模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = rtwdemo_blockreduction代码生成和编译。生成的代码是过时了。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米7.8924秒

这是优化的代码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)

限制

代码生成器不能删除块在这种情况下:

  • 块输出配置作为一个测试点或有存储类和块输入和输出有不同的数据类型、复杂性,或宽度。

  • 块有一个非常数的样品时间,输出连接到一个根输出港,有一个来源,一个常数样品时间。

  • 块有多个来源,其中一些常数样本乘以,其中一些非常数的样品时间。

  • 块的输出存储类,mux的来源,是一个虚拟的巴士,被连接到一个根外港,配置测试点,或有存储类。

  • 块的输出连接到块的输入。

  • 块是一个初始化函数内部子系统,重置功能子系统,或者终止功能子系统的子系统的输出连接到一个输出港。

  • 块的输出连接到一个子系统外港块,有一个初始条件。

  • 块的输出连接到一个初始化函数子系统的输出港,重置功能子系统,或者终止功能子系统。

  • 块的输出连接到一个外港的参数确保输出港是虚拟的被选中。

  • 块的输出连接到一个输出港,有一个初始条件参数。

  • 块的输出连接到一个合并,矩阵向量连接或连接块。

  • 块可调运行时参数。

  • 块在一个可重用的子系统,它的输出连接到一块以外的可重用的子系统。

  • 块有一个连续的状态。

  • 块的离散状态和状态记录或nonauto存储类。

  • 块是一个函数,除非你使用ssSetBlockReduction使减少块。

  • 块输出配置作为一个测试点或有存储类和它的来源是一个街区内不同条件子系统。

另请参阅

相关的话题