Параметр Loop unrolling threshold на панели Optimization определяет, когда широкий сигнал или параметр должны быть перенесены в цикл for
и когда это должно быть сгенерировано как отдельный оператор для каждого элемента сигнала. Пороговое значение по умолчанию равняется 5.
Например, рассмотрите модель ниже:
Параметром усиления блока Gain является векторный myGainVec
.
Примите, что пороговое значение развертывания цикла установлено в значение по умолчанию, 5.
Если myGainVec
объявляется как
myGainVec = [1:10];
массив 10 элементов, myGainVec_P.Gain_Gain[]
, объявляется в структуре данных
. Размер массива усиления превышает порог развертывания цикла. Поэтому код, сгенерированный для блока Gain, выполняет итерации по массиву в цикле Parameters_model
for
, как показано в следующем коде:
{
int32_T i1;
/* Gain: '<Root>/Gain' */
for(i1=0; i1<10; i1++) {
myGainVec_B.Gain_f[i1] = rtb_foo *
myGainVec_P.Gain_Gain[i1];
}
}
Если
myGainVec
объявляется как
myGainVec = [1:3];
массив трех элементов,
myGainVec_P.Gain_Gain[]
, объявляется в структуре данных Parameters
. Размер массива усиления ниже порога развертывания цикла. Сгенерированный код состоит из встроенных ссылок на каждый элемент массива, как в коде ниже.
/* Gain: '<Root>/Gain' */
myGainVec_B.Gain_f[0] = rtb_foo * myGainVec_P.Gain_Gain[0];
myGainVec_B.Gain_f[1] = rtb_foo * myGainVec_P.Gain_Gain[1];
myGainVec_B.Gain_f[2] = rtb_foo * myGainVec_P.Gain_Gain[2];
Смотрите Исследуют Имена переменных и Прокрутку Цикла (Simulink Coder) для получения дополнительной информации о прокрутке цикла.
Примечание
Когда модель включает графики Stateflow® или блоки MATLAB function, можно применить набор оптимизации Stateflow на панели Optimization. Настройки, которые вы выбираете для опций Stateflow также, применяются к блокам MATLAB function в модели. Это вызвано тем, что блоки MATLAB function и диаграммы Stateflow создаются сверху той же технологии и совместно используют кодовую базу. Вам не нужна лицензия Stateflow, чтобы использовать блоки MATLAB function.
Смотрите также
Похожие темы