|
|
Wie findet man mehrere Extremstellen in einer Messreihe? |
|
goblin |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.02.2008, 12:10
Titel: Wie findet man mehrere Extremstellen in einer Messreihe?
|
|
|
|
|
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
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 28.02.2008, 22:15
Titel:
|
|
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
|
|
|
goblin |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.02.2008, 23:50
Titel:
|
|
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: ---
|
|
|
|
|
|
Verfasst am: 29.02.2008, 00:08
Titel: WOHOOO
|
|
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
|
|
Beiträge: 914
|
|
|
|
Anmeldedatum: 18.06.07
|
|
|
|
Wohnort: Nürnberg
|
|
|
|
Version: R2006b, R2008b
|
|
|
|
|
|
Verfasst am: 29.02.2008, 09:53
Titel:
|
|
Hallo,
ich hab mal das Bild ausgetauscht - wenn Du Dich anmeldest, kannst Du das ja auch.
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
|
|
|
hboeth |
Forum-Fortgeschrittener
|
|
Beiträge: 65
|
|
|
|
Anmeldedatum: 01.07.10
|
|
|
|
Wohnort: Berlin
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2010, 09:24
Titel:
|
|
hey, das klingt super. kannst du vielleicht kurz erklären oder zeigen wie du die function angewendet hast?
bei mir funktionoiert sie nicht...
danke!
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 13.07.2010, 15:58
Titel:
|
|
|
|
lilov |
Forum-Century
|
|
Beiträge: 193
|
|
|
|
Anmeldedatum: 05.05.10
|
|
|
|
Wohnort: Bremerhaven
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.07.2010, 17:43
Titel:
|
|
es gibt auch eine funktion von signal processing toolbox die findpeaks heisst:
Hier ein Bsp.:
die positionen von den Extremwerten kannst du auch so finden:
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|