coder.unroll
通过为每次循环迭代生成循环体的副本来展开 for 循环
说明
coder.unroll() 展开 for 循环。coder.unroll 调用必须单独位于紧挨它展开的 for 循环之前的一行上。
循环展开并不在生成的代码中产生 for 循环,而是为每个循环迭代生成 for 循环体的一个副本。在每次迭代中,循环索引变为常量。要展开循环,代码生成器必须能够确定 for- 循环的边界。
对于紧凑的小型循环,展开可以提高性能。然而,对于大型循环,展开会显著增加代码生成时间并生成效率低下的代码。
在代码生成期间外,系统会忽略 coder.unroll。
示例
输入参数
提示
有时,即使您不使用
coder.unroll,代码生成器也会展开for循环。例如,如果for循环对异构元胞数组或者varargin或varargout进行索引,代码生成器将展开该循环。通过展开循环,代码生成器可以确定每个循环迭代的索引值。代码生成器使用启发式方法来确定何时展开for循环。如果启发式方法无法确定是否一定会展开循环,或如果循环迭代的次数超过限制,代码生成就会失败。在这些情况下,您可以使用coder.unroll强制进行循环展开。请参阅for 循环中 varargin 或 varargout 的非常量索引。
扩展功能
版本历史记录
在 R2011a 中推出