人在仿真软件金宝app

金宝appSimulink &基于模型的设计

IF-ELSS构建模型

Balaji Kalluri在评论中问了一个问题帖子关于mux块.巴拉吉问:

大家好
如果有人可以向我展示模拟典型的2比1多路复用器的路线,我会非常义务,我们阅读并理解它的方式。我想将典型的数字2到1个Mux的行为转化为模拟模型的典型数字2到1个Mux的行为。金宝app

如果(sel = = 0)
出= In1;
elseif(sel == 1)
出= In2;

今天我想看一种解决这个问题的方法。

控制哪个信号通过(交换机)

考虑这个问题的一种方法是控制通过系统传递的信号。交换块基于控制信号的值提供通过一个信号或另一个信号的方式。

条件通过开关的型号。

这会创建IF-Expression:当条件语句为TRUE时,设置为等于第一个Inport,否则,设置为等于第三个Inport。

优化模型

这代表了所需的逻辑,但还有另一种思考问题的方法。考虑这两个三机一体in2是其他一些昂贵计算的结果。在这种情况下,您将希望只执行输出表达式所需的一个计算,而不是总是计算两个值,然后丢弃一个不需要的值。

幸运的是,这是一个常见的模式,Simulink提供了提高效率的优化。金宝app默认情况下,条件输入分支执行转过身来(在配置参数 - >优化页面中)。

基于Simulink配置参数的条件输入分支执行优化。金宝app

这种优化允许Simulink将上游块分组在一起,并金宝app将它们放入Switch块的条件语句中。如果打开块排序顺序显示,您可能能够理解这种行为,但我更喜欢查看类似这样的简单模型的代码。

生成代码的比较,无条件输入分支执行优化。

这种优化不仅限于交换机块。产生条件表达式的其他块可以在其代码中包含上游和下游块。

我想用两个重要的笔记结束这个讨论。

  1. 我特意编写了这个示例来演示这种优化的效果。因为它是如此简单,我不得不禁用表达式折叠,否则代码将是相同的,无论如何。我不鼓励任何人在没有充分理由的情况下禁用表达式折叠。
  2. 因为这是一个优化,因此无法保证这种行为。如果你添加了一个简单的东西测试点在增益和交换机块之间,这将禁用优化。

还有其他方法可以模拟有效的条件行为,并明确保护算法的执行。我会为未来的帖子留下这个话题。

现在轮到你了

你考虑过你的模型的效率吗?你如何使用开关块?留下一个在这里评论并分享你所知道的。

|

评论

要发表评论,请点击在这里要登录您的MathWorks帐户或创建新的。