LabVIEWForum.de - Peak Detektion

LabVIEWForum.de

Normale Version: Peak Detektion
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo

ich bin gerade dabei mit eine Funktion zu basteln, mit der ich Peals eines Signalverlaufes ermitteln kann.
Ich habe schon einige Sachen probiert, jedoch komme ich nicht auf die Lösung.

Ich möchte das eigentlich so programmieren, dass das Modul mir ausgibt, dass es die Anzahl n an Peaks gibt und wo die liegen.
Deweiteren möchte ich einen Teil des Signal automatisch abschneiden.

Vielleicht ist hier ja jemand der mir Tipps geben kann?!

Ich hatte das ganze mit Flankendetektion (Transition Measurements) versucht - bis jetzt aber kein Erfolg gehabt.

anbei ein Bild des Signals:
[attachment=8607]
gelb eingezeichnet die Peaks die automatisch ermittelt werden sollen
rot eingezeichnet der Bereich der automatisch abgeschnitten werden soll

Ich danke Euch schon mal für Eure Tipps!
Da gibt's doch irgendwo unter den Mathe- oder Signalfunktionen ein VI "Peak-Detection" (zumindest bei mehr als Base-Package).

MfG, Jens
' schrieb:Da gibt's doch irgendwo unter den Mathe- oder Signalfunktionen ein VI "Peak-Detection" (zumindest bei mehr als Base-Package).

MfG, Jens

Ja... aber da muss man aber leider eine "threshold" einstellen, was ich aber alles automatisch haben möchte!
' schrieb:Ja... aber da muss man aber leider eine "threshold" einstellen, was ich aber alles automatisch haben möchte!

Was soll das heißen..."automatisch"...da musst du doch nur eingeben, in welchem Bereich (y-Wert) du deine Peaks etwa erwartest, sonst wird ja z.B. immer jeder Wert größer "null" auch als Peak angenommen. Wie soll das automatisch gehen? :wacko:Sowas muss man immer selber festlegen...auch LabVIEW kann nicht hellsehen!

Hmm
Achim
Wenn das automatisch funktionieren soll, so muß Du Dir das erarbeiten, Du kannst nicht darauf hoffen, daß es dafür eine Funktion aus dem Baukasten gibt, die das "automatisch" erledigt.
Es gibt die Funktion "Max und Min eines Arrays". Die müsste man anwenden - aber nicht für den ganzen Array, sondern einzeln für sämtliche Teilbereiche das Array zwischen den langen Pausen.
Die eigentliche Kunst besteht darin, diese Pausen ausfindig zu machen.

Hierfür würde ich zwei Parameter vorgeben.[list]
[*]Die Zeit, die eine Pause mindesten lang sein muß, um als Pause zu gelten<>
[*]Die Amplitude, die in der Pausenzeit nicht überschritten werden darf<>
[st]Bereiche, die diese Kriterien erfüllen, sind gültige Pausen.

Sind diese Pausen gefunden, dann ist es ganz einfach, vom Ende der n-ten Pause bis zum Anfang der n+1-ten Pause das Array-Maximum zu ermitteln. (Der Anfangsbereich bliebe hier automatisch unberücksichtigt, da sich in diesem keine gültige Pause befindet. Er muß also nicht extra abgeschnitten werden)

Versuche Dich mal damit, und wenn Du das VI hier postest, dann noch ein TIP: Einen originalen Datensatz mitsenden. Wie? Auf das Array (oder das Diagramm) mit rechter Maustaste klicken --> Datenoperationen --> diesen Wert als Standard. Dann bleiben die Werte im VI gespeichert.
Ich hatte auch nicht darauf gehofft dass mir irgendjemand hier was "coded"....

wie ich schon geschrieben hatte bei meinem ersten Beitrag: Hat jemand eine Idee?!

und dir Danke ich schon mal für die Idee...

versuche ich gerade zu verwirklichen.

Ich versuche gerade den "Weg" rauszubekommen, wie ich die Pausen "programmatisch" ruasfinden kann.....

Bin aber dankbar für weitere Tipps....
' schrieb:Ich versuche gerade den "Weg" rauszubekommen, wie ich die Pausen "programmatisch" ruasfinden kann.....


S.o., da steht ja alles.

eg
Box
Hmm

' schrieb:Box
' schrieb:Bin aber dankbar für weitere Tipps....
Es sieht so aus, daß die Peaks mit zunehmender Zeit stetig kleiner werden. Wenn man sich darauf verlassen kann, dann kann man das Programm, so wie ich es skizziert habe, noch etwas vereinfachen:[list=1]
[*]von vorn beginnend, 1. Pause suchen<>
[*]Absolutes Maximum aller Punkte, die sich rechts davon befinden, suchen. Punktdaten (Zeit, Wert) registirieren.<>
[*]Ausgehend von diesem Peak, Pause rechts davon (nächste Pause) suchen.<>
[*]Bei Arrayende (Pause nicht gefunden) gehe zu 5, else gehe zu 2.<>
[*]Ende der Peaksuche<>
[*]Kür: Alle gefundenen Peakdaten als Cursoren in den Graphen eintragen.<>
[st]
Seiten: 1 2
Referenz-URLs