2016-09-30 30 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