Matlab Simulink:使用掩码控制可变子系统

Matlab Simulink:使用掩码控制可变子系统,matlab,simulink,masking,Matlab,Simulink,Masking,我想找到一个简单的过程,使用mask参数在mask下切换模型内部 这个问题已经扩展到可以重新实现了。 可变子系统是一种很好的方法,可以通过工作空间参数进行控制 但是,我发现掩码参数与变量子系统选择不匹配 是关于如何使用掩码参数对系统内部的块进行更改的一系列文章的第一篇; 但是,该方法不如使用不同的子系统和开关直观。 链接也是从2008年开始的,我相信它可能在某个时候被取代了 MWE 我制作了一个模型,其中包含一个标有源代码的系统 它连接到显示其输出的显示块 Source是一个变体子系统。 它包含

我想找到一个简单的过程,使用mask参数在mask下切换模型内部

这个问题已经扩展到可以重新实现了。

可变子系统是一种很好的方法,可以通过工作空间参数进行控制
但是,我发现掩码参数与变量子系统选择不匹配

是关于如何使用掩码参数对系统内部的块进行更改的一系列文章的第一篇; 但是,该方法不如使用不同的子系统和开关直观。
链接也是从2008年开始的,我相信它可能在某个时候被取代了

MWE 我制作了一个模型,其中包含一个标有
源代码
的系统
它连接到显示其输出的
显示

Source
是一个变体子系统。
它包含3个变体:

  • Source\One
  • Source\Two
  • Source\Three
每个变量包含一个
常量
块。
常数
块的值与块标签同名。
例如,
Source\Two
包含一个值为
2
的常量块

Source
也是一个屏蔽子系统。
其掩码包含一个
单选按钮
参数,其值标记为
variantValue

变量值
参数的
单选按钮
选项包括:

  • 选择1
  • 选择2
  • 选择3
掩码
初始化
代码如下:

switch variantValue

case 'Choice 1'
set_param('Source','OverrideUsingVariant','One')
disp('One')

case 'Choice 2'
set_param('Source','OverrideUsingVariant','Two')

case 'Choice 3'
set_param('Source','OverrideUsingVariant','Three')

end
我已将变量设置为覆盖。 我无法将掩码设置为允许库块修改内容,因为它已灰显


当作为变量子系统的屏蔽子系统工作时,我会将变量子系统从屏蔽子系统深入到层次结构中。

要执行任何不通过基本工作区的操作,您首先需要设置“覆盖变量条件…”,现在您可以选择带有代码的活动变量:

set_param('untitled/Variant Subsystem','OverrideUsingVariant','Variant1')

剩下的就是创建一个蒙版,每当蒙版中的参数更改时,该蒙版都会运行上述行。这可以通过初始化命令完成。

它也适用于实时系统。我希望生成的代码只包含所选的变量。@kando:我不希望有任何问题,只要试试。如果遇到任何限制或错误,请返回一个新问题。我不确定您是如何定义掩码的,
variantValue
真的是字符吗?我希望是双人的。使用
开关
时,通常最好插入
,否则
会出现
错误
,如果您希望它永远不会发生。我刚刚尝试过,并确认它正在工作。不确定你的问题出在哪里。我用开关1
开关2
试过了,它成功了。