在 Simulink 中,我可以获取已经使用 get_param
函数给出的块对话参数的值。但是,我有兴趣找到块对话参数接受的可能有效值。例如,Sum
块仅接受其Inputs
参数的 + 和 - 符号的任意组合。有没有办法以编程方式找出这些信息?
澄清一下,我想要一个函数/方法,我可以在其中传递 Simulink 块的名称和该块的对话框参数作为输入。例如,我将传递Sum
作为 Simulink 块名称,Inputs
作为该块的参数传递。
我期望的输出是,+
和-
字符,以便我理解我只能将+
和-
字符用于此块的Inputs
参数。
块特定参数页面在每个表的Values
列中列出了不同 Simulink 块参数的有效(和默认)值。有没有办法以编程方式查找此信息,即在某个函数中传递块类型/处理程序并获取该块的特定参数的验证规则?
谢谢!
如果您查看在 C MEX S-FUNCTIONS 中检查参数的可能性,它是"免费"实现的 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
除了已经建议的解决方案之外,您还可以查看增益模块:
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)结构以获取想法。
写作为答案,因为我还不能发表评论。