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

Оптимизируйте сгенерированный код путем хранения логических сигналов в виде логических данных. Когда вы выбираете параметр конфигурации модели Реализуйте логические сигналы как логические данные (против 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;

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

  1. Откройте диалоговое окно Параметры конфигурации.

  2. Выберите логические сигналы реализации как логический параметр данных (против 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)

См. также

Похожие темы