Разблокируйте for
-loop путем создания копии тела цикла для каждой итерации цикла
coder.unroll()
разворачивает for
-цикл. coder.unroll
вызов должен быть на линии сам по себе, непосредственно предшествующей for
-цикл, который он разворачивает.
Вместо создания for
-loop в сгенерированном коде, цикл развертывания создает копию for
-loop тело для каждой итерации цикла. В каждой итерации индекс цикла становится постоянным. Чтобы развернуть цикл, генератор кода должен быть в состоянии определить границы for-
цикл.
Для небольших плотных циклов размотка может улучшить эффективность. Однако для больших циклов развертывание может значительно увеличить время генерации кода и сгенерировать неэффективный код.
coder.unroll
игнорируется вне генерации кода.
Иногда генератор кода разворачивает for
-цикл, хотя вы не используете coder.unroll
. Для примера, если a for
-цикл индексы в гетерогенный массив ячеек или в varargin
или varargout
генератор кода разворачивает цикл. Путем разворачивания цикла генератор кода может определить значение индекса для каждой итерации цикла. Генератор кода использует эвристику, чтобы определить, когда разворачивать for
-цикл. Если эвристика не может идентифицировать, что развертывание оправдано, или если количество итераций цикла превышает предел, генерация кода прекращает работать. В этих случаях можно принудительно разворачивать цикл при помощи coder.unroll
. Смотрите Non-Constant Index в varargin или varargout в цикле for-Loop.