Можно задать повторное использование буфера через блоки MATLAB Function с помощью того же имени переменной для входного и выходных аргументов. Генератор кода пытается повторно использовать выход одного блока MATLAB Function в качестве входа к следующему блоку MATLAB Function. Эта оптимизация сохраняет потребление ОЗУ и ПЗУ и уменьшает копии данных.
Используйте Inport, Outport и Блоки MATLAB function, чтобы создать модель mf_inplace
.
Откройте каждый блок MATLAB Function и скопируйте следующий код:
function y = fcn(y) %#codegen y=y+4;
Откройте диалоговое окно Параметры конфигурации. На вкладке Code Generation измените System target file на ert.tlc
.
На вкладке 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)
Генератор кода не может повторно использовать входные и выходные аргументы.