我有一个MATLAB Function块包含在一个屏蔽子系统中。子系统的掩码有一个参数p1
,我想在MATLAB函数中使用它。如何手动执行此操作是described in the documentation。但是,我需要以编程方式执行此操作,到目前为止,我还没有弄清楚如何执行此操作。
以编程方式is easy using Simulink.Mask.addParameter
将参数添加到子系统的掩码中,creating the MATLAB Function block和setting its code也是如此。困难的部分是以编程方式从"输入"切换函数参数p1
的范围。到"参数" (documentation中的步骤2-4)。我无法找到存储此信息的位置(我检查了"传统" Simulink块参数和与块关联的Stateflow对象)。
答案 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.Inputs
和B.Outputs
相对)。