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

Wie findet man mehrere Extremstellen in einer Messreihe?

 

goblin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2008, 12:10     Titel: Wie findet man mehrere Extremstellen in einer Messreihe?
  Antworten mit Zitat      
hallo

ich habs leider nicht so wirklich mit der numerik. und nun darf ich ein problem lösen, bei welchem ich auf anhieb keine effiziente lösung finde.

es geht um folgendes:
mir wurde eine SEHR umfangreiche messreihe zur auswertung gegeben.
das ganze sieht ein wenig aus wie eine stürmische meeresoberfläche.
will heissen: es sind ettliche (ca hundert) grosse wellen zu erkennen.
die struktur dieser wellen erstreckt sich über +/- 50 messwerte.

die messwerte selbst sind mit einem starken rauschen behaftet. (sprich: stark gezackte linie) die spitze der grossen wellenist ungefähr um zwei zehnerpotenzen grösser als das rauschen.


übrigens: die grossen wellen sind nicht in konstantem intervall, sind auch nicht gleich breit und können sich auch etwas überlagern.

und in dem ganzen tumult soll ich nun die spitzen der wellen finden - mit zugehörigem zeitindex (vektor für plot), versteht sich...



was ich mir bis jetzt überlegt habe:
teile die messreihe in etwas kleinere intervalle, finde das maximum eines jeden intervalls (sofern es sich nicht in der randzone befindet).

aber das teil überzeugt mich nicht. a) ist der prozess recht langsam und b) ist das gefundene maximum mit grosser unsicherheit behaftet. (es könnte ja unr ein maximum im lokalen intervall sein - aber wenn das intervall direkt zwischen zwei wellen liegt, finde ich damit nur die kante zur nächsten welle... also kein tatsächliches maximum.



gibt es von matlab möglicherweise funktionen, eine vorgehensweise, einen guide oder irgendwas, was mir helfen könnte?


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 28.02.2008, 22:15     Titel:
  Antworten mit Zitat      
Wenn Dein Signal zu sehr verrauscht ist, dann musste Du zuerst glätten oder filtern...

Die Extremstellen findest wie folgt:
===
Beispielmessreihe
>> data = [1 4 3 7 8 9 6 2 5 0 3]

Index von extremen Mimias
>> findstr([0 sign(diff(data))],[-1 1])
ans =

3 8 10

Index von extremen Maximas
>> findstr([0 sign(diff(data))],[1 -1])
ans =

2 6 9
===


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
goblin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2008, 23:50     Titel:
  Antworten mit Zitat      
ok, ich hab nach stundenlangem rumknobeln mal ne funktion gefunden, mit welcher man das ganze doch brauchbar glätten kann:
sgolayfilt(), ein "Savitzky-Golay Filter"

ich habe dann versucht, mit einer art cut-off die spitzen rauszuschnippeln. das funktioniert aber irgendwie nur bedingt erwünscht, weil ich dann ALLE werte oberhalb dieses cut-offs erhalte.

um mal ein konkretes bild zu geben:


achtung, das ist ein semilogy-plot. die kleinen roten kreise sind die zur zeit erhaltenen maximumstellen (der geglätteten funktion).
im grunde genommen hätte ich ja pro spitze am liebsten nur EINEN einzigen punkt. und nicht 10.

...

narf, drecksaufgabe ^^
 
goblin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.02.2008, 00:08     Titel: WOHOOO
  Antworten mit Zitat      
Wohoooo!!!
ich bin auf die ultimative lösung gestossen!

das m-file nennt sich "Find Peak value" und kann hier heruntergeladen werden.

super easy zu verwenden und bringt mit geringem rechenaufwand ein brauchbares resultat!


 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 29.02.2008, 09:53     Titel:
  Antworten mit Zitat      
Hallo,

ich hab mal das Bild ausgetauscht - wenn Du Dich anmeldest, kannst Du das ja auch. Wink

Toll wäre es, wenn Du die Bilder noch etwas verkleinern könntest. Der Beitrag aus dem File Exchange ist echt super.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
hboeth
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 01.07.10
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 13.07.2010, 09:24     Titel:
  Antworten mit Zitat      
hey, das klingt super. kannst du vielleicht kurz erklären oder zeigen wie du die function angewendet hast?
bei mir funktionoiert sie nicht...
danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 13.07.2010, 15:58     Titel:
  Antworten mit Zitat      
Hallo,
versuche mal diese Funktion ist einfacher zu bedienen.

http://www.mathworks.com/matlabcent.....2275-extrema-m-extrema2-m
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 31.07.2010, 17:43     Titel:
  Antworten mit Zitat      
es gibt auch eine funktion von signal processing toolbox die findpeaks heisst:
Hier ein Bsp.:
Code:

 x=(0:0.1:20)';
 y=sin(x);
 [dummy,lcs]=findpeaks(y);
 plot(x,y)
 hold on
 plot(x(lcs),y(lcs),'r*')

 


die positionen von den Extremwerten kannst du auch so finden:
Code:

lcs = find(diff(sign(diff(y)))~=0);
 
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.