Matlab:查找梯度不起作用的峰

时间:2019-06-14 02:36:35

标签: matlab

enter image description here

我有以上信号。红点是导数等于零的位置。我试图在中间找到两个最大/最小峰值,但在这些点上导数不为零。我使用下面的代码:

df1=gradient(A);
pv_a = (df1==0);
plot(x,A, x(pv_a),A(pv_a), 'r*');

我也进行了平滑处理(两次通过移动平均值50点)并将信号标准化为1到-1之间。任何帮助都会很棒。我想使用梯度检测信号的最小峰值和最大峰值。我知道我可以使用findpeaks或localmax / min,但是我正在将该方法与那些方法进行比较,但它不起作用,我想知道为什么。

更新:

我发现,如果我寻找从负值变为正值的值,则会找到峰值。我猜这行得通而不是检查零。

idmax=strfind(sign(df1),[-1 1]);
idmin=strfind(sign(df1),[1 -1])
plot(x,A, x(idmax),A(idmax), 'r*', x(idmin),A(idmin), 'b*');

0 个答案:

没有答案