Оптимизируйте сгенерированный код путем хранения логических сигналов в виде логических данных. Когда вы выбираете параметр конфигурации модели Реализуйте логические сигналы как логические данные (против double), блоки, которые генерируют логические сигналы, выводят логические сигналы.
Оптимизация:
Уменьшает потребление ПЗУ и ОЗУ.
Улучшает скорость выполнения.
Рассмотрим rtwdemo_logicalAsBoolean модели. Выходные выходы Relational Operator
, Logical Operator
и HitCrossing
блоки double
хотя они и представляют логические данные.
model = 'rtwdemo_logicalAsBoolean';
open_system(model);
Создайте временную папку (в системной временной папке) для процесса сборки и проверки.
currentDir = pwd; [~,cgDir] = rtwdemodir();
Создайте модель.
slbuild(model)
### Starting build procedure for: rtwdemo_logicalAsBoolean ### Successful completion of build procedure for: rtwdemo_logicalAsBoolean Build Summary Top model targets built: Model Action Rebuild Reason ========================================================================================================= rtwdemo_logicalAsBoolean Code generated and compiled Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 19.966s
Просмотрите сгенерированный код без оптимизации. Эти строки кода находятся в 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;
Откройте диалоговое окно Параметры конфигурации.
Выберите логические сигналы реализации как логический параметр данных (против double).
Также можно использовать API командной строки, чтобы включить оптимизацию:
set_param(model,'BooleanDataType','on');
Сгенерированный код сохраняет логический сигнал, выводимый как логические данные.
Создайте модель.
slbuild(model)
### Starting build procedure for: rtwdemo_logicalAsBoolean ### Successful completion of build procedure for: rtwdemo_logicalAsBoolean Build Summary Top model targets built: Model Action Rebuild Reason ======================================================================================== rtwdemo_logicalAsBoolean Code generated and compiled Generated code was out of date. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 8.5208s
Просмотрите сгенерированный код с оптимизацией. Эти строки кода находятся в 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)
Реализуйте логические сигналы как логические данные (против double)