如何使用Findpeaks在Matlab中正确绘制山谷

时间:2016-09-30 11:42:24

标签: matlab plot max minimum

我有一个矢量Ir,我正在尝试使用findpeaks函数识别峰值和谷值。

然而,当我绘制山谷时,我得到了下面的图像,我做错了什么?

enter image description here

这是我的代码,我假设我在反转数据集时做错了什么?

[ypk,yt] = findpeaks( Ir,'MinPeakProminence', 5);
ypk2=[]
yt2=[]
for w = 1:numel(ypk)
    if ypk(w) >=0
        ypk2 = [ypk2;ypk(w)]
        yt2 = [yt2;yt(w)]
    end
end


%upsidedownIr = max(Ir)-Ir
upsidedownIr = -Ir
[ypk3,yt3] = findpeaks( upsidedownIr,'MinPeakProminence', 2);
ypk4=[]
yt4=[]
for w = 1:numel(ypk3)
    if ypk3(w) >=0
        ypk4 = [ypk4;ypk3(w)]
        yt4 = [yt4;yt3(w)]
    end
end


figure(1), clf

plot(time,Ir,'k-')
hold on
plot(time(yt2),ypk2,'r*')
plot(time(yt4),ypk4,'g*')

1 个答案:

答案 0 :(得分:0)

你的山谷的标志是不正确的,请否定它否则值正确

最后尝试-1*ypk4,您正在反转代码中的Ir,它会将您的山谷作为正值,因此您必须再次将它们转为否定才能获得正确的答案  或

ypk4 = -1*ypk4