Simulink 中的 if 语句块累积最后一个真值

if statement block in Simulink accumulates last true value

如果 Simulink 中的语句与编程语言中的不同,它会累积最后一个真值,直到它再次出现。

从这里可以看出,当随机值低于 0.5(if 条件)时,输出不会像 if 语句通常期望的那样给出零。

使用 if 的正确方法是什么? (最好我不想放饱和度和matlab函数)

到目前为止,我可以使用一个基本的 matlab 函数来做这件事;

function y = fcn(u)

    if u>0
        y = u;
    else
        y = 0;
    end
end

但我想知道这是否是使用 if 块的正确方法。

If Action 子系统中的 Out 块在禁用时有一个 属性 到 holdreset 输出。默认是持有;你想让它重置。您还需要将 0 指定为初始条件,这是它将重置为的条件。

将 If action 子系统中的块 属性 更改为 'reset',看起来它在您当前的实现中是 'held'