编辑a";“MATLAB函数”;以编程方式在Simulink中创建块

编辑a";“MATLAB函数”;以编程方式在Simulink中创建块,matlab,simulink,Matlab,Simulink,我想以编程方式创建一个简单的Simulink模型,其中包含一个块,即使用Matlab代码 由于,我成功创建了一个包含以下块的新模型: open_系统(新_系统(“我的_系统”)) 添加_块('simulink/用户定义函数/MATLAB函数','my_system/my_func') 通常,为了编辑“MATLAB函数”块的代码,必须通过双击该块“打开”该块,然后输入新代码 但是,我希望使用例如或任何相关函数以编程方式设置代码 例如,要将以下内容设置为块的代码: 函数y=fcn(v) %#编码基

我想以编程方式创建一个简单的Simulink模型,其中包含一个块,即使用Matlab代码

由于,我成功创建了一个包含以下块的新模型:

open_系统(新_系统(“我的_系统”))
添加_块('simulink/用户定义函数/MATLAB函数','my_system/my_func')
通常,为了编辑“MATLAB函数”块的代码,必须通过双击该块“打开”该块,然后输入新代码

但是,我希望使用例如或任何相关函数以编程方式设置代码

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

函数y=fcn(v)
%#编码基因
y=2*u;
我想使用如下内容:

set_param('my_system/my_func','Script',。。。
“函数y=fcn(u)\n%#codegen\n\ny=2*u;”。。。
);
我查看了
get_param('my_system/my_func','ObjectParameters')
的输出,并试图猜测哪个参数可能用于设置块的函数代码:到目前为止,我找不到任何参数。因此,我的问题是:

Q:是否可以仅使用Matlab命令在Simulink中设置“Matlab函数”块的代码?

(根据@Ander Biguri的要求,我已将一个对我有效的解决方案移动到一个单独的答案帖子。如果有人有其他/更好的方法,请随时发布)

那么这个问题好像以前问过。(也许表述方式有所不同?)我已经使用以下代码解决了我的问题:

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;')

这是一个有趣的问题。不要编辑问题,而是发布一个有助于你的答案。@Ander Biguri:Done;)需要注意的主要事项是
MATLAB函数
块是一个伪装的
Stateflow
块(或至少是其中的一部分)。因此,需要使用
Stateflow
API功能来操作块。