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