Оптимизируйте сгенерированный код Используя булевы данные для логических сигналов

Оптимизируйте сгенерированный код путем хранения логических сигналов как булевых данных. Когда вы выбираете сигналы логики Реализации параметра конфигурации модели как булевы данные (по сравнению с двойным), блоки, которые генерируют логические сигналы выходные сигналы булевской переменной.

Оптимизация:

  • Уменьшает потребление 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: 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 20.248s

Просмотрите сгенерированный код без оптимизации. Эти строки кода находятся в 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;

Включите оптимизацию

  1. Откройте диалоговое окно Configuration Parameters.

  2. Выберите сигналы логики Реализации как булевы данные (по сравнению с двойным) параметр.

В качестве альтернативы можно использовать API командной строки, чтобы включить оптимизацию:

set_param(model,'BooleanDataType','on');

Сгенерируйте код с оптимизацией

Сгенерированный код хранит логический выход сигнала как булевы данные.

Создайте модель.

rtwbuild(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.9345s

Просмотрите сгенерированный код с оптимизацией. Эти строки кода находятся в 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)

Смотрите также

Похожие темы