主要内容

减少中间结果的计算和存储块输出

表达折叠

表达折叠优化代码,减少中间结果的计算块输出和存储在临时缓冲区或变量的结果。当表达式折叠,代码生成器(折叠)块计算成一个单一表达式,而不是生成单独的代码语句和存储为每个块模型中声明。大多数仿真金宝app软件®折叠块支持表达金宝app式。

经常折叠提高效率的表达式生成的代码,实现结果比较有利hand-optimized代码。在许多情况下,整个群体的模式计算折叠成一个高度优化的代码。

您可以使用表达式折叠在自己的内联函数块。有关更多信息,请参见折叠S-Functions支持表达金宝app式

示例模型

生成代码

的折叠,表达explfld.c文件,代码生成器生成此代码。

/ *模型阶跃函数* /空白exprfld_step (void){/ *获得:“< Root > /增益”包含:*尺寸:“< Root > / In1”* / exprfld_B。S1 = exprfld_P。Gain_Gain * exprfld_U.i1;/ *获取:“< Root > / Gain1”包含:*尺寸:“< Root > / In2”* / exprfld_B。S2 = exprfld_P。Gain1_Gain * exprfld_U.i2;/ *输出港:“< Root > /着干活”包含:*产品:< Root > /产品‘* / exprfld_Y。着干活= exprfld_B。S1 * exprfld_B.S2;}

都有单独的代码语句块。在最终输出之前,这些代码语句计算获得的临时结果块。

启用优化

表达折叠在默认情况下。是否表达折叠在现有的模型:

  1. 折叠可只有当表达式配置参数>信号存储重用参数被选中是因为表达折叠操作只有在涉及局部变量的表达式。启用信号存储重用参数。

  2. 当您选择信号存储重用,启用本地块输出,重用本地块输出,消除多余的局部变量(表达式折叠)参数都在默认情况下。

生成代码的优化

表达式的折叠,代码生成器生成一个单行的输出计算,如图所示expfld.c文件。生成的文档注释块的参数出现在表达式。

/ *模型阶跃函数* /空白exprfld_step (void){/ *外港:“< Root > /着干活”包含:*获得:“< Root > /增益”*获得:“< Root > / Gain1”*尺寸:“< Root > / In1”*尺寸:“< Root > / In2”*产品:< Root > /产品‘* / exprfld_Y。着干活= exprfld_P。Gain_Gain * exprfld_U。i1 * (exprfld_P。Gain1_Gain * exprfld_U.i2);}

例如表达折叠在一个更复杂的模型,点击rtwdemo_slexprfold,或者在命令提示符处,键入:

rtwdemo_slexprfold

有关更多信息,请参见在生成的代码中启用和重用本地块输出

另请参阅

|||

相关的话题