LabVIEWForum.de
Signal glätten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Signal glätten (/Thread-Signal-glaetten--10049)

Seiten: 1 2 3


Signal glätten - Aston - 09.02.2008 19:38

Hallo Lucki,

das VI zur gleitenden Mittelwertbildung habe ich von Achim kopiert und wenn ich ihn in seinen Ausführungen richtig verstanden habe, so bildet das VI den Mittelwert um den aktuellen Index aus der Umgebung +- Anzahl/2, die man einstellen kann. Deshalb habe ich eigentlich nicht erwartet, dass ich Probleme an den Rändern des eingelesenen Arrays bekomme.

Was meinst du genau mit der geschlossenen Kurve? Ich erfasse kontinuierliche meine Signale, die mir dann mit der Erfassung -1 auf 250 S. große Arrays portioniert werden. Bei der Glättung bekomme ich dann die Sprünge zw. den Arrays.
Muss ich also um meine Sprünge in der Kurve zu beseitigen die Methode 2 von dir anwenden?
Wo ersetzt du die Werte vom Ende an den Anfang? Mit der Array-Erstellen-Fkt. ?

Ich bin bei diesem Thema momentan ziemlich überfragt, entschuldige deshalb bitte meine Begriffsstutzigkeit.

Gruß Martin


Signal glätten - Lucki - 10.02.2008 11:42

' schrieb:Hallo Lucki,

das VI zur gleitenden Mittelwertbildung habe ich von Achim kopiert und wenn ich ihn in seinen Ausführungen richtig verstanden habe, so bildet das VI den Mittelwert um den aktuellen Index aus der Umgebung +- Anzahl/2, die man einstellen kann. Deshalb habe ich eigentlich nicht erwartet, dass ich Probleme an den Rändern des eingelesenen Arrays bekomme.
Überleg doch mal selbst. Angenommen, die Halbwertsbreite ist 2. Das entspricht einer Mittelwertbildung über 5 Werte. Du beginnst beim Element 0. Länge = 5, Startindex = 0-2 =-2. Im Array gibt es aber keine Elemente mit negativen Index. Eigentlich müßte es da ein Fehlermeldung geben. Die Philosophie von LabVIEW ist aber, Fehlermeldungen wenn es irgend geht zu vermeiden, und statt dessen etwas zumachen, was in der gegebenen Situation wahrscheinlich sinnvoll ist. In diesem Fall werden für die gar nicht vorhandenen Elemente Ersatzelemente mit dem Wert 0 angeboten. Das mag manchmal passen, aber oft auch nicht.
Wenn man weder Werte verlieren noch falsch angezeigt haben will, dann müßte man es so machen (ich bleibe beim Beispiel)
Index 0: Wert übernehmen, keine Mittelwertbildung.
Index 1: Mittelwert Index 0..2 (3 Werte)
Index 2..: Normales Programm, Mittelung über 5 Werte.
Und eine ähnliche Sonderbehandlung auch bei den letzten Werten.

Zitat:Was meinst du genau mit der geschlossenen Kurve? Ich erfasse kontinuierliche meine Signale, die mir dann mit der Erfassung -1 auf 250 S. große Arrays portioniert werden.
Entschuldigung, da habe ich etwas [E.Jandl.Humor ON] velwechsert [E.Jandl.Humor OFF]. Es läuft hier parallel ein fast gleicher Tread, und dort ist das was geglättet werden soll eine in sich geschlossene Hysteresekurve.

Wenn Du die Werte kontinuierlich erfasst, dann kannst Du ja aus dem Vollen schöpfen und mußt Dich nicht um die drei Werte am Anfang und Ende kümmern.

Hier noch ein VI zur Punkt-zu-Punkt (also auf deutsch: online) Filterung. Im Diagramm verzögere ich auch die ungefilterten Daten, so daß es keine Zeitverschiebung wischen den beiden Kurven gibt. (Das VI "Glättungskoeffizienten" enthält allerdings seit gefühlten 100 Jahren ein Fehler für dreieckförmige Gewichtung, die Koeffizienten sind falsch, es funktioniert nicht. Glücklicherweise kann man das BD des VI öfnnen und den Fehler korrigieren)
[attachment=11099]Lv85_img


Signal glätten - Aston - 10.02.2008 20:50

' schrieb:Wenn Du die Werte kontinuierlich erfasst, dann kannst Du ja aus dem Vollen schöpfen und mußt Dich nicht um die drei Werte am Anfang und Ende kümmern.

Klar ich erfasse kontinuierlich, aber beim Auslesen bekomme ich portionierte Arrays, die zwischeneinander Sprünge bei der Glättung aufweisen. Der Index beginnt immer wieder bei Null
und somit bekomme ich dein angesprochenes Problem.
Also muss ich mich doch irgendwie um den Anfang und das Ende kümmern, oder?

Gruß Martin


Signal glätten - Lucki - 10.02.2008 23:14

' schrieb:Klar ich erfasse kontinuierlich, aber beim Auslesen bekomme ich portionierte Arrays, die zwischeneinander Sprünge bei der Glättung aufweisen. Der Index beginnt immer wieder bei Null
und somit bekomme ich dein angesprochenes Problem.
Also muss ich mich doch irgendwie um den Anfang und das Ende kümmern, oder?
Die Sprünge kann man vermeiden, wenn man nicht die obigen selbsgebastelten Vis verwendet, sondern die im letzten Beispiele verwendeten digitalen Filter. Wenn dann zwischen den, wie Du sagst "Portionen", kein Filterreset gemacht wird, und die nächste Portion immer die direkte zeitliche Fortsetzung der vorhergehenden ist, dann ist die Glättung perfekt. (Aber trotzdem: nichts gegen selbstgestricke VIs. Man muß dann nur mit nicht initialisierten Schieberegistern dafür sorgen, daß diese nicht bei jedem neuen Aufruf in ihren Anfangszustand verfallen. Und von dieser Idee muß man sich dann auch verabschieden: Um Verzögerungen zu vermeiden, auf Elemente zuzugreifen, die in der Zukunft liegen)


Signal glätten - Aston - 11.02.2008 22:23

Hallo,

so ich habe mal einige Varianten ausprobiert zur Glättung. Mit dem Express-VI Filtern (Glätten) und dem FIR-Filter mit Vorwärtskoeff. bekam ich allerdings nur Mist raus. Irgendwie arbeiten die viel zu langsam in meiner Anwendung. Die Verschiebung der 5,6 Werte durch die Halbwertsbreite dürfte dabei doch eigentlich nicht so auffallen, oder?

Ich bin jetzt bei der gleitenden Mittelwertbildung mit Schieberegister geblieben. Die Sprünge sind dadurch weg, aber meine Daten werden jetzt unendlich oft geglättet sodass sie am Ende fast gegen Null gehen. Die Sprünge verschwinden nur, wenn die Glättung sich in der Schleife befindet in der auch der XY-Graph erstellt wird. Diese Schleife muss aber unendlich oft bis zum Messabbruch laufen, wodurch ich die unendliche Glättung nicht aufhalten kann. Die Glättung in Schleifen davor einzubauen, führte zu den alten Sprüngen.
Kann mir jemand helfen?

:offtopic:was mich schon immer gestört hat: In einem XY-Graph erstelle ich doch Punkte mit festen Koordinaten. Warum sausen diese dann wild durch mein Schaubild.?Klar sie sind über die Schieberegister miteinander verbunden, trotzdem finde ich diese Beweglichkeit seltsam. Oder kann man das verhindern? Zudem hat es den Anschein, dass die Diagramme 3-dimensional werden.

Gruss Martin


Signal glätten - jg - 11.02.2008 22:45

' schrieb:was mich schon immer gestört hat: In einem XY-Graph erstelle ich doch Punkte mit festen Koordinaten. Warum sausen diese dann wild durch mein Schaubild.?Klar sie sind über die Schieberegister miteinander verbunden, trotzdem finde ich diese Beweglichkeit seltsam. Oder kann man das verhindern? Zudem hat es den Anschein, dass die Diagramme 3-dimensional werden.
Wie meinst du das jetzt? Daten rasen durch das SchaubildHmm? Der XY-Graph stellt das an Daten dar, was du "reinschreibst".
Oder meinst du die Autoskalierierung der Achsen? Die kannst du abschalten.

MfG, Jens


Signal glätten - Aston - 12.02.2008 09:58

Hallo,

ich meine nicht die Autoskalierung.
Meine erstellte Hysterse dreht sich in sich selbst mal nach rechts, dann wieder nach links zurück usw.
Dabei besteht sie doch aus festen Punkten, die sich nicht auf dem Schaubild bewegen dürften.
Nach meiner Vorstellung sollten die aktuellen übermittelten Punkte sozusagen auf der Hysterse im " Kreis fahren" und zuvor geschriebene Punkte fest an ihrem Ort liegen bleiben.
So wie auf einem Blatt Papier mit Hand gezeichet.
Gruß Martin


Signal glätten - jg - 12.02.2008 11:18

Hallo, Martin,

soweit ich sehe, hast du deine handschriftliche Zeichnung der gewünschten Hysterese hier noch nicht hochgeladen?! Und ohne einen realen Datensatz und das entsprechende VI, das den XY-Graph zeichnet, ist es wirklich schwer nachzuvollziehen, was du genau meinst.

MfG, Jens


Signal glätten - Aston - 12.02.2008 12:43

Hallo Jens,

hier ist mal nur der XY-Graph mit den Werten, gespeichert als Standard.
Während der Erfassung dreht sich dann das ganze visualisierte Gebilde in sich mal rechts und dann
wieder linksrum. Die Drehachse befindet sich dann mittig in der Hysterese.
Ich hoffe du kannst damit was anfangen.

Gruß Martin

=Lv82_img


Signal glätten - jg - 12.02.2008 14:32

Hallo, Martin,

jetzt kann ich das schon eher verstehen...

Das mit dem Links- und Rechtsrum könnte auch eine optische Täuschung sein (habe ich jetzt aber nicht im Detail analysiert, nur so eine Idee). Ich nehme mal an, dass du immer eine Reihe von Daten gleichzeitig an den schon bestehenden Teil des XY-Graphen anhängst. Könnte mir vorstellen, dass das Links-Rechts einfach nur für das träge menschliche Auge so aussieht (ala Film, da drehen sich die Räder von Autos ja auch scheinbar rückwärts).

Aber das sind doch jetzt schon gefilterte Daten?! Wie sieht denn die Hysterese ungeglättet aus?

MfG, Jens

EDIT: Habe gerade übersehen, ungefilterte Hysterese hast du ja schon im ersten Beitrag gezeigt....