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