Разблокируйте 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.
Если for
-цикл не предшествует coder.unroll
генератор кода использует циклический порог разворачивания, чтобы определить, следует ли автоматически разворачивать цикл. Если количество итераций цикла меньше порога, генератор кода разворачивает цикл. Если количество итераций больше или равно порогу, генератор кода производит for
-цикл. Пороговое значение по умолчанию 5
. Изменяя этот порог, можно точно настроить размотку цикла. Для получения дополнительной информации см. раздел «Отмена прокрутки циклов».