Оптимизируйте сгенерированный код путем хранения логических сигналов как булевых данных. Когда вы выбираете сигналы логики Реализации параметра конфигурации модели как булевы данные (по сравнению с двойным), блоки, которые генерируют логические сигналы выходные сигналы булевской переменной.
Оптимизация:
Уменьшает потребление RAM и ROM.
Улучшает скорость выполнения.
Рассмотрите модель rtwdemo_logicalAsBoolean. Выходные параметры Relational Operator
, Logical Operator
и HitCrossing
блоками является double
, даже при том, что они представляют логические данные.
model = 'rtwdemo_logicalAsBoolean';
open_system(model);
Создайте временную папку (в вашей системе временная папка) для сборки и инспекционного процесса.
currentDir = pwd; [~,cgDir] = rtwdemodir();
Создайте модель.
rtwbuild(model)
### Starting build procedure for model: rtwdemo_logicalAsBoolean ### Successful completion of build procedure for model: rtwdemo_logicalAsBoolean
Просмотрите сгенерированный код без оптимизации. Эти строки кода находятся в rtwdemo_logicalAsBoolean.h
.
hfile = fullfile(cgDir,'rtwdemo_logicalAsBoolean_ert_rtw',... 'rtwdemo_logicalAsBoolean.h'); rtwdemodbtype(hfile,'/* External outputs','/* Parameters (default storage) */',1,0);
/* External outputs (root outports fed by signals with default storage) */ typedef struct { real_T Out1; /* '<Root>/Out1' */ real_T Out2; /* '<Root>/Out2' */ real_T Out3; /* '<Root>/Out3' */ } ExtY_rtwdemo_logicalAsBoolean_T;
Откройте диалоговое окно Configuration Parameters.
Выберите сигналы логики Реализации как булевы данные (по сравнению с двойным) параметр.
В качестве альтернативы можно использовать API командной строки, чтобы включить оптимизацию:
set_param(model,'BooleanDataType','on');
Сгенерированный код хранит логический выход сигнала как булевы данные.
Создайте модель.
rtwbuild(model)
### Starting build procedure for model: rtwdemo_logicalAsBoolean ### Successful completion of build procedure for model: rtwdemo_logicalAsBoolean
Просмотрите сгенерированный код с оптимизацией. Эти строки кода находятся в rtwdemo_logicalAsBoolean.h
.
rtwdemodbtype(hfile,'/* External outputs','/* Parameters (default storage) */',1,0);
/* External outputs (root outports fed by signals with default storage) */ typedef struct { boolean_T Out1; /* '<Root>/Out1' */ boolean_T Out2; /* '<Root>/Out2' */ boolean_T Out3; /* '<Root>/Out3' */ } ExtY_rtwdemo_logicalAsBoolean_T;
Закройте отчет генерации кода и модель.
bdclose(model) rtwdemoclean; cd(currentDir)
Реализуйте логические сигналы как булевы данные (по сравнению с двойным)