以编程方式将输入更改为MATLAB功能块中的参数

时间:2014-04-08 14:35:31

标签: matlab simulink

我有一个MATLAB Function块包含在一个屏蔽子系统中。子系统的掩码有一个参数p1,我想在MATLAB函数中使用它。如何手动执行此操作是described in the documentation。但是,我需要以编程方式执行此操作,到目前为止,我还没有弄清楚如何执行此操作。

以编程方式is easy using Simulink.Mask.addParameter将参数添加到子系统的掩码中,creating the MATLAB Function blocksetting its code也是如此。困难的部分是以编程方式从"输入"切换函数参数p1的范围。到"参数" (documentation中的步骤2-4)。我无法找到存储此信息的位置(我检查了"传统" Simulink块参数和与块关联的Stateflow对象)。

1 个答案:

答案 0 :(得分:4)

我找到了答案on MATLAB Answers。使用以下代码将输入数字i的范围设置为Parameter

% Get Stateflow root object
S = sfroot();

% Get block handle
B = S.find('Name','myBlockName','-isa','Stateflow.EMChart');

% Set scope
set(B.Inputs(i), 'Scope', 'Parameter')

请注意,您可以使用B.getChildren()访问块的所有输入,输出和参数。这对参数特别有用,因为没有单独的B.Parameters列表(与B.InputsB.Outputs相对)。