matlab - 如何在 simulink 中创建 if-then 逻辑?

标签 matlab conditional-statements simulink

我在 matlab 中有一个书面代码和一个程序,但我想在 simulink 中做同样的思考。我陷入了程序的 if-then 部分,无法弄清楚。

我尝试使用“If” block ,但后来我不知道如何说“then alfa=0”。在尝试研究之后,我看到了许多不同的方法来执行条件语句,现在我很困惑。

if(vb-y(2))*y(3)<0
    alfa=0
end

if y(3)<zba && (vb-y(2))*y(3)>=0
    alfa=0
end
if zba<y(3) && y(3)<zmax && (vb-y(2))*y(3)>=0
    alfa=0.5*(sin(pi*(y(3)-(zmax+zba)/2)/(zmax-zba))+1)
end
if zmax<y(3) && (vb-y(2))*y(3)>=0
    alfa=1
end

我基本上需要用 simulink 制作这个。如果有人可以为我开始或解释执行此操作的正确方法,我将非常感激。

最佳答案

我相信这可以通过以下方式完成:选择 if-block 来实现您的条件,并选择 thenelse >-block,您选择一个 if-action-block。 if block 决定在每个时间步将评估这两个 if-action block 中的哪一个,并且以下 merge-block 将两个单独的输出集成为一个组合信号(您的中的 alfa情况)再次。该图显示了代码的第一个 if-then(假设 else alfa=1)。如果没有 else,则可以在 block 属性中禁用 else-output )。

image showing solution 由于 if-block 支持 elseif 表达式作为逗号分隔列表,因此我建议您将其用于第二个、第三个和第四个 if,这意味着您很可能需要额外的 if-action block ,并且合并 block 的更多输入。另外,对于 elseif 表达式,您需要将 && 更改为 & ,这应该没问题。 a && b 仅在 a 为 true 时才计算 b,a & b 始终计算两者。

关于matlab - 如何在 simulink 中创建 if-then 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57637318/

相关文章:

matlab - 类型为 'mtimes' 的输入参数的未定义函数或方法 'struct'

java - 增加 ActionListener 内的值的问题

r - 如果另一列包含特定值集,则使用 R 中的 dplyr 过滤列

parameters - 即时更新 Simulink Block?

c - 解决 matlab 函数 : expected '=' , ',' 、 ';' 、 'asm' 或 '__attribute__' 之前 '.' token 中 Simulink C 代码的编译错误

matlab - 使用 MATLAB 查找具有大量噪声的数据的最大值

matlab - 避免为 `textscan` 中的大表中的每一列键入转换说明符

matlab - 使用 MATLAB 实现视频稳定

css - 涉及自定义大小单位变量的纯 CSS if/else 语句

input - 在 SIMULINK 中以编程方式设置输入端口的值