以编程方式在Simulink中编辑“MATLAB功能”块的代码

时间:2017-02-16 02:24:57

标签: matlab simulink

我想以编程方式创建一个包含"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功能”块的代码,必须通过双击它然后输入新代码来“打开”该块。

但是,我想使用例如编程方式设置该代码。 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功能”块的代码?

1 个答案:

答案 0 :(得分:1)

(根据@Ander Biguri的要求,我已经移动了 解决方案,这对我来说是一个单独的答案帖。如果有人有替代/更好的方法,请随意发布它)

好吧,之前似乎问过这个问题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;')