我需要一个Simulink块或一组块来进行峰值检测:将输入流的每个值与其前一个值和后一个值进行比较。如果它大于前一个AND大于下一个值,则输出该值。
我已尝试使用Matlab功能块,但我无法进行所需的延迟。我的意思是,根据我的尝试,它不可能存储以前的值,例如。
那么,我该怎么办?
更新:另一个例子 在回复评论时,如果我处理离散值,建议的解决方案会很有帮助。所以这是另一个代表我需要的例子: 施密特触发器
我需要实现一个Matlab函数来实现给定的场景。我可以做点像
if u >= 2
y = 3;
elseif (u < 2)
y = -3;
但是这仍然是不正确的,因为我需要查看输入的先前值(滞后),否则我最终会得到类似下面的内容
PS:我知道模拟中没有任何称为先前值的东西,但我们都知道Simulink最终将模拟值作为离散处理(更大的采样)。所以我想也许有办法做到这一点。
答案 0 :(得分:1)
我认为你的代码很好,除了一个小错误:
if u > 2
y = 3;
elseif u < -2
y = -3;
else
y = u;
变量&#39; u&#39;在elseif部分应该与-2(上阈值但负号)进行比较
希望它有所帮助!