Simulink Merge 在Matlab R2010a版本中留下的坑

本文详细介绍了Matlab中Merge模块的功能及其在不同版本中的默认设置变化。特别关注了从R2010a到R2014a及后续版本中,关于非条件互斥输入的处理方式的变化,并强调了在进行MAAB检查时所需遵循的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Merge的主要用法是把多个信号组合成一个信号。使用方法在help文档有详细描述。我这里主要说明一下matlab不同版本的默认设置对该block的影响。

R2010a版本中

Underspecified initialization detection的默认设置是:classic;

Detect multiple driving blocks executing at the same time step 的默认设置是:none。

这就允许了merge模块的输入可以是非条件互斥的输入,换句话来说就是merge的任一输入可以在同一个调度周期内同步修改其输出,最终的输出结果就是最后一个更新的输入(模块更新的顺序可以通过菜单栏的Display/Blocks/Sorted见附1观察)。当然,这种方式是不推荐的,因为这样做的结果就会造成数据流不是单向的,增加了模块之间耦合的复杂度,很难直观的看到该输出到底是被谁动了。

也许是matlab自身也意识到了这个问题,在后来的R2014a中(中间有没有修改,没有使用过那些版本,我也不清楚):

Underspecified initialization detection的默认设置是:Simplified;

Detect multiple driving blocks executing at the same time step 的设置则出现了提示:Multiple driving blocks executing at the same time step will result in an error when "Underspecified initialization detection:" is set to "Simplified".

也就是说R2014a已经开始默认不推荐:merge模块的输入为非条件互斥的输入。而2010版本的模型切换为新版本的R2014a时,我们分析 Update Advisor,也会推荐更改该设置。当然前提是,你的merge使用满足输入为条件互斥的。

R2016a中,Underspecified initialization detection在常用参数面板中已经不可见了只能从搜索中查找了。

最后补充两点:

  1. 在进行MAAB检查时,是需要保持Underspecified initialization detection的默认设置为Simplified的。
  2. 其他版本的matlab没有关注过,具体情况不详





见附1







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

modolllee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值