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