Задайте повторное использование буфера для блоков MATLAB function в пути

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

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

  1. Используйте Inport, Outport и Блоки MATLAB function, чтобы создать модель mf_inplace.

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

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

  4. На вкладке Solver измените параметр Type на Fixed-step.

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

Сгенерируйте код для модели. The 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 Function.

Примечание

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

Похожие темы