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

lokale Extrempunkte in Array finden mit Einschränkung

 

cey
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2011, 20:17     Titel: lokale Extrempunkte in Array finden mit Einschränkung
  Antworten mit Zitat      
Hallo zusammen. ich hoffe ihr könnt mir bei meinem Problem helfen. Ich möchte gerne in einem Array die lokalen Extremwerte bestimmen. Dazu habe ich folgenden Code:

Code:

a = [0 -1  1  1  2.5  2.5  2  1  2   1  1   0  -2  0] % Vektor definieren
d = sign(diff(a));                       % Differenz zum Vorgängerelement bestimmen
find(d ~= [d(1) d(1: end - 1)])          % Indizes der lokalen Extremwerte berechnen
 


Wenn ich das Array plotte, sieht das so aus:




Die blauen Punkte sind die Hochpunkte, die ich suche, und die roten die Tiefpunkte.

Mit dem obigen Code funktioniert das ja nicht. An den Stellen wo die Funktion kurz abfällt und dann wieder ansteigt, wird mir ja ein Minimum berechnet. Das möchte ich vermeiden. Aber an der Stelle wo die Funktion ansteigt, so bleibt und dann wieder abfällt, hätte ich gerne 2 Maxima.
Kann mir jemand von euch helfen?

Ich bin jetzt in Matlab kein Ass, deshalb habe ich damit so meine SChwierigkeiten und bekomme das nicht hin.

Gruß
cey
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.05.2011, 23:15     Titel: Re: lokale Extrempunkte in Array finden mit Einschränkung
  Antworten mit Zitat      
Hallo cey,

Die Daten und das Diagram passen nicht zusammen.
Du möchtest also "kleine" Abweichungen ignorieren. Kannst Du denn mathematisch definieren, was "klein" ist? Ist die Abweichung relativ oder absolut?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2011, 09:09     Titel: Frage
  Antworten mit Zitat      
Also klein ist, wenn der Abstand nur einen Schritt auf der x-Achse beträgt. Also wenn der Vektor x=(1 2 3 4 5 6 7 ...) ist, ist der abstand 1.
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.05.2011, 08:31     Titel: Extremwerte bestimmen
  Antworten mit Zitat      
Also mit klein meine ich, wenn die Differenz zwischen 2 y-werten nur eine Schrittweite auf der x-Achse beträgt. Wenn man die Werte in dem Vektor betrachtet, den ich angegeben habe, jetzt unabhängig von der Grafik, dann ist Der minimale Abstand 1 den ich ignorieren möchte.


Hat irgendjemand eine Idee?

Gruss
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.05.2011, 14:40     Titel: Re: Extremwerte bestimmen
  Antworten mit Zitat      
Hallo cey,

Ich zögere immer noch nach einer Lösung zu suchen, weil Dein erster Post ein Diagramm enthält, das einfach nicht zu den geposteten Daten passt.
"Eine Schrittweite auf der x-Achse" ist auch nicht klar definiert: Meinst Du den Spalten-Index oder den X-Wert?

Ich kann die Beschreibung Deines Problems deshalb nicht nachvollziehen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.05.2011, 15:44     Titel: geänderte Werte
  Antworten mit Zitat      
hallo jan,

also ich habe jetzt mal grafik und werte angepasst.


t =[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18];
x= [-2 -2 0 1 2 2 1 2 2 1 0 -1 -2 -1 0 -1 -1 -2 0];



das mit der schrittweite meine ich so:

der x(4)=2 und einen schritt auf der t-achse weiter x(5)=2. ich hoffe das ist diesmal verständlicher.

die blauen punkte sind meine gesuchten maxima und die roten die gesuchten minima.

ich hoffe du kannst mir da helfen.

gruß[/img]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.05.2011, 20:36     Titel: Re: geänderte Werte
  Antworten mit Zitat      
Hallo cey,

Wieso sind die ersten beiden Punkte kein Minimum, obwohl der letzte Punkt als Maximum akzeptiert wird?
Was passiert bei [0, 1, 0, 1, 0, 1] ?
Was passiert bei [0, 3, 1, 2, 1, 3, 0] ?

Ich würde erst mal ein FOR-Schleife erstellen und die Extremwerte suchen. Das geht zwar per DIFF schneller, aber vielleicht kommt es ja auf die 1000stel Sekunde nicht an:
Code:
x = rand(1, 100);
isMax = false(1, 100);
isMin = false(1, 100);
for i = 2:99
  if x(i - 1)  <= x(i) && x(i) >= x(i + 1)
    isMax(i) = true;
  elseif x(i - 1) >= x(i) && x(I) <= x(i + 1)
    isMin(i) = true;
  end
end

Nun wird es komplizierter: Du möchtest diejenigen Maxima verwerfen, die nur einen Schritt von einem Minimum entfernt liegen - und umgekehrt. Bei [0,1,0,1,0] ist das aber nicht eindeutig: Verschwinden die Minima oder die Maxima?! Das muss zunächst eindeutig definiert sein.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cey
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 69
Anmeldedatum: 16.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2011, 09:35     Titel:
  Antworten mit Zitat      
Hallo Jan,

sorry, dass ich mich jetzt erst melde.
Also ich erkläre nochmal was ich möchte:

Meine Funktion sieht im oberen Bereich ungefähr so aus


Das Problem bei der Bestimmung dieser Werte ist folgendes:



Wenn es so stufig hoch und runter geht, funktioniert das nicht richtig.


Hast du da vielleicht ne Idee?

Gruß
cey
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 - 2025 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.