【问题标题】:Control Masks Programmatically for Simulink block以编程方式控制 Simulink 模块的封装
【发布时间】:2013-09-16 19:42:50
【问题描述】:

我对 simulink 块属性有疑问。我需要检查块是否具有名称为“paramName”的参数。如果没有这个参数,我需要添加它。 为此,我想获取掩码参数:

p = Simulink.Mask.get(blockName);

这个例子是我从帮助中得到的。但是 Simulink 显示以下错误:

未定义的变量“Simulink”或类“Simulink.Mask.get”

我应该怎么做才能解决我的问题?

【问题讨论】:

  • 实际上,阅读文档 (mathworks.co.uk/help/simulink/ug/…),这应该可行。您使用的是哪个版本的 MATLAB?您的版本中可能没有此功能。下面用get_param 描述的工作应该可以工作(文档建议使用其他属性,如MaskVariables 等......)
  • 我正在使用 MATLAB R2011b (7.13.0.564) 64 位。
  • 感谢您的回答。我可以检查参数是否存在。为此,我使用您的代码和“isfield”函数。

标签: matlab simulink


【解决方案1】:

您可能需要将get_paramDialogParameters 属性结合使用,例如:

block_params = get_param(%block_path%,`DialogParameters`);

输出block_params 是一个包含该特定块的所有参数的结构。将%block_path% 替换为相关块的路径,或将gcb 用于当前块。 get_param 的文档页面上有一个示例:

获取块参数值和属性

列出块参数 Requisite Friction 子系统中 Inertia 块的名称 sldemo_clutch模特。

block_params = get_param('sldemo_clutch/Friction Mode Logic/Requisite Friction/Inertia Ratio',... 'DialogParameters') 

ans = 
                                          Gain: [1x1 struct]
                             Multiplication: [1x1 struct]
                                 ParamMin: [1x1 struct]
                                ParamMax: [1x1 struct]
                  ParamDataTypeStr: [1x1 struct]
                                     OutMin: [1x1 struct]
                                    OutMax: [1x1 struct]
                      OutDataTypeStr: [1x1 struct]
                                LockScale: [1x1 struct]
                                  RndMeth: [1x1 struct]
    SaturateOnIntegerOverflow: [1x1 struct]
                             SampleTime: [1x1 struct]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    相关资源
    最近更新 更多