WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Maximalwert des zweitgrößten peaks auslesen

 

JanMar
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2020, 18:58     Titel: Maximalwert des zweitgrößten peaks auslesen
  Antworten mit Zitat      
Hallo zusammen,

ich möchte gerne bei Messdaten immer auf den zweitgrößten Peak (siehe Anhang) zugreifen, genauer gesagt möchte ich den größten Wert des zweitgrößten Peaks auslesen. Wie kann ich das am kompaktesten lösen? Ich habe meein Signal b über der Zeit t aufgetragen.
Das Maximum h, also den größten Wert der gesamten Messung, habe ich folgendermaßen ausgelesen:
Code:

h=find(b==max(b));  
 

Wenn ich nur das Maximum der kompletten Messung auf NaN setze, wird ja der nächstkleinere Messwert und nicht das nächste Peak verwendet.
Mit der Funktion findpeaks habe ich auch noch nicht das richtige Ergebnis rausbekommen.
Ich möchte also soetwas wie k=find(b==max(''zweiter peak'')), hoffe ihr versteht was ich meine

Schonmal vielen Dank für eure Hilfe und ein schönes Wochenende!

Unbenannt.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt.PNG
 Dateigröße:  187.89 KB
 Heruntergeladen:  291 mal
Unbenannt.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt.PNG
 Dateigröße:  187.89 KB
 Heruntergeladen:  280 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.460
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.02.2020, 20:03     Titel:
  Antworten mit Zitat      
Hallo,

findpeaks ist die richtige Funktion. Welche Probleme sind da konkret aufgetreten?
Alternativ islocalmax, und dann nach dem zweitgrößten lokalen Maximum suchen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JanMar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.02.2020, 00:16     Titel:
  Antworten mit Zitat      
Hallo Harald,

mit findpeaks werden mir zwar die Werte angezeigt, ich möchte aber direkt h den zweitgrößten Peak zuweisen, wie kann ich das machen? also h=findpeaks(data, zweitgrößter Peak). Bin noch relativ unerfahren im Umgang mit MatLab

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.460
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.02.2020, 15:03     Titel:
  Antworten mit Zitat      
Hallo,

"direkt" geht das nicht. Es ist doch echt nicht so schlimm, ein paar Zeilen dafür zu verwenden?
Du solltest findpeaks mit 2 Rückgabeargumenten aufrufen. Dann kannst du das Maximum aus den Peaks und den entsprechenden Werten des zweiten Rückgabearguments entfernen, und dann das zweite Maximum bestimmen.

Anhand des Beispiels aus der Doku von findpeaks:

Code:
x = linspace(0,1,1000);

Pos = [1 2 3 5 7 8]/10;
Hgt = [3 4 4 2 2 3];
Wdt = [2 6 3 3 4 6]/100;

for n = 1:length(Pos)
    Gauss(n,:) = Hgt(n)*exp(-((x - Pos(n))/Wdt(n)).^2);
end

PeakSig = sum(Gauss);
plot(x,PeakSig)

[p, loc] = findpeaks(PeakSig)
[maxVal, idx] = max(p);
p(idx) = []; loc(idx) = [];
[maxVal, idx] = max(p);
loc(idx)


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.