主要内容

配置环路解滚阈值

环展开阈值参数。优化窗格确定宽信号或参数何时应包装成循环,当它应该为信号的每个元素生成一个单独的语句时。缺省阈值为5。

例如,考虑下面的模型:

增益块的增益参数是矢量myGainVec

假设循环展开阈值设置为缺省值5。

如果myGainVec声明为

myGainVec = [1:10];

一个包含10个元素的数组,myGainVec_P。Gain_Gain []对象中声明Parameters_模型数据结构。增益数组的大小超过了环路展开阈值。因此,为Gain块生成的代码迭代数组中的数组循环,如下代码所示:

{int32_T i1;/*增益:'<根>/增益' */ for(i1=0;i1 < 10;i1++) {myGainVec_B。增益[i1] = rtb_foo * myGainVec_P.Gain_Gain[i1];}}

如果myGainVec声明为

myGainVec = [1:3];

一个包含三个元素的数组,myGainVec_P。Gain_Gain []对象中声明参数数据结构。增益数组的大小低于循环展开阈值。生成的代码包含对数组每个元素的内联引用,如下面的代码所示。

/*增益:'<根>/增益' */ myGainVec_B. /增益[0]= rtb_foo * mygainvec_p .增益[0];myGainVec_B。增益[1]= rtb_foo * mygainvec_p .增益[1];myGainVec_B。增益[2]= rtb_foo * mygainvec_p .增益[2];

看到探索变量名和循环滚动有关循环滚动的更多信息。

请注意

当模型包含状态流时®图或MATLAB函数块时,您可以应用一组状态流优化优化窗格。为状态流选项选择的设置也适用于MATLAB函数模型中的块。这是因为MATLAB函数块和状态流程图构建在相同的技术之上,并共享一个代码库。您不需要使用状态流许可证MATLAB函数块。

请注意

如果你的MATLAB函数块包含两个嵌套的代码循环:

  • 如果内部循环的迭代次数小于阈值,代码生成器将首先展开内部循环。随后,如果两个循环的迭代次数的乘积也小于阈值,则代码生成器展开外部循环。否则,代码生成器生成外部循环。

  • 如果内部循环的迭代次数等于或大于阈值,代码生成器将同时生成循环

  • 对于n维数组,代码生成器展开每个相邻的循环,直到循环迭代的乘积小于阈值。

另请参阅

相关的话题