以编程方式查找Simulink块参数接受的有效值/数据类型

时间:2016-02-29 22:49:01

标签: matlab simulink

在Simulink中,我可以获得已使用get_param函数给出的块对话参数的值。但是,我有兴趣找到块对话参数接受的可能有效值。例如,Sum块仅接受其Inputs参数的+和 - 符号的任意组合。有没有办法以编程方式找出这些信息?

为了澄清,我想要一个函数/方法,我可以在其中传递Simulink Block的名称和该块的对话框参数。例如,我将Sum作为Simulink块名称传递,并将Inputs作为该块的参数传递。

我期望输出的是+-个字符,因此我理解我只能使用+-个字符作为此块{{1}参数。

页面Block-specific Parameters列出了每个表的Inputs列中不同Simulink块参数的有效(和默认)值。有没有办法以编程方式查找此信息,即在某个函数中传递块类型/处理程序并获取该块的特定参数的验证规则?

谢谢!

2 个答案:

答案 0 :(得分:3)

如果你看一眼at the possibilities to check parameters in C MEX S-Functions,那就是#34;免费"实现了检查参数的C代码。至少对于这种情况,无法获得一组可接受的参数。唯一的可能性是实际测试是否接受特殊值:

value_to_test='++9'
old=get_param('s1/Add','Inputs')
try
set_param('s1/Add','Inputs',value_to_test);
accepted=true;
set_param('s1/Add','Inputs',old);
except
accepted=false;
end

答案 1 :(得分:0)

除了已经建议的解决方案,你可以检查一下Gain块:

dlgParams = get_param(gcbh, 'DialogParameters');
dlgParams.Gain.Validity
%A struct with all accepted data, like: datatype, complexity, sign
dlgParams.Gain.Validity.Sign
%Returns: {'positive'  'negative'  'zero'}

这看起来很有希望。但是,Sum块没有类似的属性。你可以检查(dlgParams.Inputs)结构中的想法。

写作答案,因为我还没有发表评论。