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将它们放入Switch块的条件语句中。如果打开块排序顺序显示,您可能能够理解这种行为,但我更喜欢查看类似这样的简单模型的代码。
这种优化不仅限于交换机块。产生条件表达式的其他块可以在其代码中包含上游和下游块。
我想用两个重要的笔记结束这个讨论。
- 我特意编写了这个示例来演示这种优化的效果。因为它是如此简单,我不得不禁用表达式折叠,否则代码将是相同的,无论如何。我不鼓励任何人在没有充分理由的情况下禁用表达式折叠。
- 因为这是一个优化,因此无法保证这种行为。如果你添加了一个简单的东西测试点在增益和交换机块之间,这将禁用优化。
还有其他方法可以模拟有效的条件行为,并明确保护算法的执行。我会为未来的帖子留下这个话题。
现在轮到你了
你考虑过你的模型的效率吗?你如何使用开关块?留下一个在这里评论并分享你所知道的。
评论
要发表评论,请点击在这里要登录您的MathWorks帐户或创建新的。