2016-09-30 3 views
1

Ich habe einen Vektor Ir und ich versuche, Spitzen und Täler mit Hilfe der Findpeaks-Funktion zu identifizieren.Wie man Täler in Matlab mit Findpeaks korrekt plottet

Allerdings, wenn ich die Täler plotten, bekomme ich das folgende Bild, was mache ich falsch?

enter image description here

Dies ist mein Code, nehme ich mir etwas tue, falsch, wenn ich INVERTIG den Datensatz bin?

[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

Nun, was kann ich sehen, ist, dass das Zeichen der Täler falsch ist, sollte es negativ sein, versuchen -1 * ypk4 wenn meine Annahme ist nicht falsch – Umar

+0

Danke, @Umar! Wo genau siehst du das? Ich frage, weil ich neu bin und ich bin mir nicht sicher, wo ich das Zeichen ändern soll. Sorry, habe gerade deine Bearbeitung gesehen! – Spica

+1

Perfekt @Umar! Danke, bitte posten als Antwort und ich kann es akzeptieren! – Spica

Antwort

0

Das Zeichen Ihrer Täler falsch ist, bitte negieren sonst die Werte korrekt sind

versuchen -1*ypk4 am Ende, Sie sind Invertierung in Ihrem Code Ihren Ir, die Sie Täler als positive Werte, so dass Sie gibt haben sie wieder zu drehen, um auf negative, die richtige Antwort zu bekommen oder

ypk4 = -1*ypk4 
Verwandte Themen