2016-09-30 29 views
1

我有一个向量Ir,我试图使用findpeaks函数来识别峰和谷。如何在Matlab中使用Findpeaks正确地绘制谷底

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

enter image description here

这是我的代码,我认为我做错了什么,当我invertig数据集?

[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*') 
+0

那么我可以看到的是,山谷的符号错了,它应该是否定的,尽量-1 * ypk4如果我的假设是不错误 – Umar

+0

谢谢,@Umar!你究竟在哪里看到这些?我问,因为我是新手,我不知道我应该在哪里改变标志。对不起,刚刚看到你的编辑! – Spica

+1

完美@Umar!谢谢,请发表回复,我可以接受! – Spica

回答

0

您的谷的标志是不正确,请否定它,否则该值是正确

尝试-1*ypk4到底,你在你的代码,让你的山谷正面的价值观颠倒的Ir所以你不得不再次它们转负,以获得正确的答案 或

ypk4 = -1*ypk4