forЭтот пример показывает, как генератор кода комбинирует циклы for. Сгенерированный код использует построения for, чтобы представлять разнообразие моделирования шаблонов, таких как матричный сигнал или блоки Итератора. Используя анализ зависимости по данным, генератор кода комбинирует построения for, чтобы уменьшать статический размер кода и ветвление во время выполнения.
Преимущества оптимизации циклов for:
Сокращение ROM и потребления RAM.
Увеличение скорости выполнения.
forВ модели rtwdemo_forloop, блок switch и блок MATLAB function представляют построения for. В диалоговом окне In1 Block Parameters параметр размерностей Порта устанавливается на 10.

Модель не содержит зависимости по данным через итерации цикла for. Поэтому генератор кода комбинирует циклы for в один цикл. Создайте модель и просмотрите сгенерированный код.
### Starting build procedure for model: rtwdemo_forloop ### Successful completion of build procedure for model: rtwdemo_forloop
Сгенерированный файл, rtwdemo_forloop.c, содержит код для одного цикла for.
/* Model step function */
void rtwdemo_forloop_step(void)
{
int32_T k;
/* MATLAB Function: '<Root>/Accum' */
/* MATLAB Function 'Accum': '<S1>:1' */
/* '<S1>:1:3' */
/* '<S1>:1:4' */
rtwdemo_forloop_Y.Out1 = 0.0;
/* '<S1>:1:5' */
for (k = 0; k < 10; k++) {
/* Switch: '<Root>/Switch' incorporates:
* Gain: '<Root>/G1'
* Gain: '<Root>/G3'
* Inport: '<Root>/In1'
* Sum: '<Root>/Sum1'
* Sum: '<Root>/Sum2'
* UnitDelay: '<Root>/Delay'
*/
if (3.0 * rtwdemo_forloop_U.In1[k] >= 0.0) {
rtwdemo_forloop_DW.Delay_DSTATE[k] = rtwdemo_forloop_U.In1[k] -
rtwdemo_forloop_DW.Delay_DSTATE[k];
} else {
rtwdemo_forloop_DW.Delay_DSTATE[k] = (rtwdemo_forloop_DW.Delay_DSTATE[k] -
rtwdemo_forloop_U.In1[k]) * 5.0;
}
/* End of Switch: '<Root>/Switch' */
/* MATLAB Function: '<Root>/Accum' */
/* '<S1>:1:5' */
/* '<S1>:1:6' */
rtwdemo_forloop_Y.Out1 += (1.0 + (real_T)k) +
rtwdemo_forloop_DW.Delay_DSTATE[k];
}
}
Закройте модель.