以编程方式在 Simulink 中编辑 "MATLAB Function" 块的代码

Editing the Code of a "MATLAB Function" Block in Simulink Programmatically

我想以编程方式创建一个包含 "MATLAB Function" 块的简单 Simulink 模型——即使用 Matlab 代码。

感谢 this guide,我已经成功地创建了一个包含方块的新模型:

open_system(new_system('my_system'))
add_block('simulink/User-Defined Functions/MATLAB Function', 'my_system/my_func')

通常,为了编辑 "MATLAB Function" 方块的代码,必须 "open" 双击方块然后输入新代码。

但是,我想以编程方式设置该代码,例如使用set_param() 或任何相关函数。

例如,将以下内容设置为块的代码:

function y = fcn(v)
%#codegen

y = 2 * u;

我想使用类似的东西:

set_param('my_system/my_func', 'Script',...
    'function y = fcn(u)\n%#codegen\n\ny = 2 * u;'...
);

我查看了 get_param('my_system/my_func', 'ObjectParameters') 的输出并试图猜测哪个参数可能用于设置块的功能代码:到目前为止,我找不到任何参数。因此,我的问题是:

问:是否可以仅使用 Matlab 命令在 Simulink 中设置 "MATLAB Function" 块的代码?

(应@Ander Biguri 的要求,我已将对我有用的 a 解决方案移至单独的答案 post。如果有人有一个 alternative/better 方法,也请随意 post 它)

嗯,好像这个问题之前有人问过here(也许表述方式不同?) 我已经使用以下代码成功解决了我的问题:

sf = sfroot()
block = sf.find('Path','my_system/my_func','-isa','Stateflow.EMChart');
block.Script = sprintf('function y = fcn(u)\n%%#codegen\n\ny = 2 * u;')