Simulink中

时间:2016-07-13 15:25:18

标签: matlab function simulink

我需要一个Simulink块或一组块来进行峰值检测:将输入流的每个值与其前一个值和后一个值进行比较。如果它大于前一个AND大于下一个值,则输出该值。

我已尝试使用Matlab功能块,但我无法进行所需的延迟。我的意思是,根据我的尝试,它不可能存储以前的值,例如。

那么,我该怎么办?

更新:另一个例子 在回复评论时,如果我处理离散值,建议的解决方案会很有帮助。所以这是另一个代表我需要的例子: 施密特触发器 enter image description here

我需要实现一个Matlab函数来实现给定的场景。我可以做点像

if u >= 2
  y = 3;
elseif (u < 2)
  y = -3;

但是这仍然是不正确的,因为我需要查看输入的先前值(滞后),否则我最终会得到类似下面的内容 enter image description here

PS:我知道模拟中没有任何称为先前值的东西,但我们都知道Simulink最终将模拟值作为离散处理(更大的采样)。所以我想也许有办法做到这一点。

1 个答案:

答案 0 :(得分:1)

我认为你的代码很好,除了一个小错误:

if u > 2
y = 3;
elseif u < -2
y = -3;
else
y = u;

变量&#39; u&#39;在elseif部分应该与-2(上阈值但负号)进行比较

希望它有所帮助!