exponenta event banner

Укажите повторное использование буфера для функциональных блоков MATLAB в пути

Можно указать повторное использование буфера в функциональных блоках MATLAB, используя одно и то же имя переменной для входных и выходных аргументов. Генератор кода пытается повторно использовать выходной сигнал одного функционального блока MATLAB в качестве входного сигнала следующего функционального блока MATLAB. Эта оптимизация позволяет экономить ОЗУ и ПЗУ и сокращает количество копий данных.

Пример модели

  1. Для создания модели используйте функциональные блоки Inport, Outport и MATLAB mf_inplace.

  2. Откройте каждый функциональный блок MATLAB и скопируйте следующий код:

    function y = fcn(y)
    %#codegen
    
    y=y+4;
    
  3. Откройте диалоговое окно «Параметры конфигурации». На вкладке Создание кода измените целевой файл системы на ert.tlc.

  4. На вкладке Решатель (Solver) измените параметр Тип (Type) на Fixed-step.

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

Создайте код для модели. mf_inplace.c файл содержит следующий код:

void mf_inplace_MATLABFunction(real_T *rty_y)
{
  *rty_y += 4.0;
}
 
void mf_inplace_step(void)
{
  real_T rtb_y_p5;
  rtb_y_p5 = mf_inplace_U.In1;
  mf_inplace_MATLABFunction(&rtb_y_p5);
  mf_inplace_MATLABFunction(&rtb_y_p5);
  mf_inplace_MATLABFunction(&rtb_y_p5);
  mf_inplace_Y.Out1 = rtb_y_p5;
  mf_inplace_MATLABFunction(&mf_inplace_Y.Out1);
}
Генератор кода повторно использует переменную rtb_y_p5 для входных и выходных аргументов каждого функционального блока MATLAB.

Примечание

На вкладке Создание кода (Code Generation) в диалоговом окне Параметры блока подсистемы (Subsystem Block Parameters), если для параметра Упаковка функции (Function packaging) установлено значение Nonreusable function и параметр Function interface имеет значение Allow arguments (Optimized), генератор кода не может повторно использовать входные и выходные аргументы.

Связанные темы