Hallo, ich würde gerne die Messwerte, die im angehängten Screenshot blau dargestellt sind glätten. Dazu habe ich ein Kalmanfilter angewandt, den ich in einem anderen Forum gefunden habe (grün dargestellt). Da das Kalmanfilter komplex und schwer zu beschreiben ist, habe ich eine exponentielle Glättung (wird eher im Wirtschaftlichen Bereich genutzt) angewandt (grau dargestellt). Die Formel für die exponentielle Glättung habe ich aus einem Video (https://www.youtube.com/watch?v=W0oSM7AkU-0). Formel: Y'1 = α*X1 + (1-α)*Y'0 Kann mir jemand sagen was der Unterschied zwischen den beiden Glättungsverfahren ist?
Oha, da fehlen aber ganz schön viele Grundlagen. Mach doch erst einmal ein Tiefpass drüber, und schau mal welche Verzugszeit für dich noch akzeptabel ist.
Nikolas S. schrieb: > Dazu habe ich ein Kalmanfilter angewandt, den ich in einem anderen Forum > gefunden habe (grün dargestellt). Ich mag da in meinem Horizont beschränkt sein, aber ein Kalmanfilter mit keinen weiteren Eingangsdaten als einer einzelnen Messreihe erscheint mir etwas sinnlos. Wie sieht die Implementierung denn aus?
Dennis schrieb: > Oha, da fehlen aber ganz schön viele Grundlagen. > > Mach doch erst einmal ein Tiefpass drüber HUST! und er schrieb Nikolas S. schrieb: > Formel: Y'1 = α*X1 + (1-α)*Y'0 das ist ein Tiefpassfilter erster Ordnung (0 < a < 1) filterwert_neu = a*Eingangswert + (1-a)*filterwert_alt filterwert_alt = filterwert_neu na? erkennstes jetzt oder "fehlen da die Grundlagen" ;) 'sid
Nikolas S. schrieb: > Kann mir jemand sagen was der Unterschied zwischen den beiden > Glättungsverfahren ist? Oh verzeihung, vergessen. der Tiefpassfilter verschiebt den "neuen" Wert möglichst nah in Richtung des "alten" werts eben mit dem faktor dem Du ihm zugeschrieben hast. ein (vereinfachter iterativer) kalmanfilter versucht anhand bekannter Werte den neuen Wert vorherzusagen (er schätzt also den Grad der Änderung) und versucht dann den neuen wert möglichst in richtung des 'geschätzteen' wertes zu verschieben. stark vereinfacht gesagt in der Folge 10,20,30,40,50 (und neuem wert) 65 versucht der tiefpass die 65 in richtung 50 zu korrigieren, der kalman versucht die 65 in richtung 60 zu korrigieren. kalman filter gibt es aber unterschiedliche Ansätze, komplexere und weniger komplexe, iterative und rekursive filter usw usf. sowie es auch beim Tiefpassfilter mehrere Ansätze gibt. Welcher der für Dich richtige ist, kann man NUR anhand bekannter Messdaten schätzen und dem Zweck besagter Daten. Am besten ist Du schaust Dir ein paar filter funktionen an, und implementierst möglichst viele unterschiedliche für ein und dieselbe Messreihe. (im ideal in einzelnen graphen für die Übersichtlichkeit jeweils mit 3 oder 4 unterschiedlichen koeffizienten/parametern) und dann suchst Du dir den graphen raus, der die für dich wichtige Information möglichst klar darstellt. Im Grunde ist das nämlich "geschmacksache" was man für sinnvoll/übersichtlich hält. 'sid
Beitrag #6383666 wurde von einem Moderator gelöscht.
sid schrieb: > Am besten ist Du schaust Dir ein paar filter funktionen an, > und implementierst möglichst viele unterschiedliche für ein und dieselbe > Messreihe. > (im ideal in einzelnen graphen für die Übersichtlichkeit jeweils mit 3 > oder 4 unterschiedlichen koeffizienten/parametern) > und dann suchst Du dir den graphen raus, der die für dich wichtige > Information möglichst klar darstellt. Bullshit, das ist basteln bzw. dumm rumprobieren. Wenn du es halbwegs wie ein Profi machen willst: du machst ein FFT über dein Signal und schaust dein Spektrum an. Definierst den Frequenzbereich der für dich von Nutzen ist. Den Rest filterst (also bedämpfst) du soweit weg bis es nicht mehr stört. Abhängig vom Bereich eignet sich dazu ein Tiefpass gut (idealerweise diskret vor dem Meßeingang, dann hast du auch direkt die anti-aliasing mit dabei sowie ein paar weitere Vorteile). Den Rest kann man digital filtern (Tiefpass , Bandpass , Whatever). sid schrieb: > Im Grunde ist das nämlich "geschmacksache" was man für > sinnvoll/übersichtlich hält. Ebenfalls blödsinn. Da kommen eher Sachen wie Filterstabilität, Gruppenlaufzeit u.ä. ins Spiel, und es ist definitiv nicht "Geschmacksache". Sid: für dich speziell mal eine kleine Denksportaufgabe, da du ja so überzeugt von dir bist: Was unterscheidet einen echten Tiefpass von deinem oben dargestellen Formel? Bitte nicht vereinfachen, ruhig mal den Könner raushängen lassen :-)
Such mal nach FIR und IIR, das sind zwei Implementationsarten für digitale Tiefpässe. https://de.wikipedia.org/wiki/Filter_mit_endlicher_Impulsantwort Wenn man den Anfang und das Ende deines Signals anschaut, ist kaum etwas periodisches erkennbar, lediglich in der Mitte gibt es einen Auschlag, der eine Schwingung verursacht hat. Als sehr einfacher Filter würde ich dir einmal zum Medianfilter raten. Dieser filter Rauschen besonders gut weg. Sollte die Filtergrösse grösser sein, als deine Schwingung, bringst du auch diese gut weg.
Dennis schrieb: > Was unterscheidet einen echten Tiefpass von > deinem oben dargestellen Formel? Gar nichts, aber ich bin mal auf deine Erklärung gespannt, warum das kein "echtes" Tiefpassfilter sein soll.
Dennis schrieb im Beitrag #6383666:
> bezaubernden Persönlichkeit
Ach Bübchen, wenn Du Nikolas anranzt aber den Tiefpassfilter SELBER
nicht erkennst, was erwartest Du? Lob für deine unzulängliche
Persönlichkeit?
Und Filter liefern immer "Näherungswerte"
im besten Fall um Messungenauigkeiten zu unterdrücken;
im gewöhnlichen Fall um Messdaten in ansehnliche anschauliche bunte
Bildchen
zu verwandeln um Prinzipien und Vorgänge einer breiteren (unbedarfteren)
Masse zugänglich zu machen.
Da ich einen Graphen in einer Exceltabell sehe, gehe ich von letzerem
aus;
eventuell zu unrecht, nicht aber ganz unbegründet.
schon Messdaten sind leider nie so genau wie man es gerne hätte;
auch die Skalenteilung und damit Auflösung des Graphen liefert eine
Ungenauigkeit etc.pp.
DESWEGEN ist die Genauigkeit des Graphen zugunsten der besseren
Veranschauung zu vernachlässigen.
Und das ist nicht Bastelei,
es ist sehr wohl "rumprobieren" zugegeben,
dumm ist es nur ausprobieren als etwas schlechtes zu bezeichnen.
Denn "zu probieren" ist eine sinnvolle Methode ein Gefühl für
Filterfunktionen und deren Parametern und Koeffizienten zu bekommen wenn
man sich erst kurz mit solchen Themen beschäftigt und Vor und Nachteile
einzelner Varianten noch nicht nur anhand der Formel abwägen kann.
fouriertransformation auf Messdaten anzuwenden ist eine unfassbar
dämliche Idee sobald die Messdaten keiner kontinuierlichen Funktion
folgen;
Du also Daten hast, die einer gewissen Zufälligkeit unterliegen.
(Anzahl der Regentropfen pro Zeiteinheit innerhalb einer bestimmten
Fläche zB sowas Bizarres wie Anzahl gefundener Blöcke eines
Cryptominer(pool)s)
da kann dir keine Frequenzzerlegung weiterhelfen.
Selbst periodische Zyklen innerhalb bestimmter Datensätze weisen nicht
immer zwingend auf zugrundeliegende Funktionsbeschreibung hin.
(Im Herbst regnet's mehr als im Sommer, deswegen ist der akute Schauer
vor meiner Tür aber nicht irrelevant!)
Und deine FFT würde Dir interessante Frequenzen liefern, die aber
allesamt vollständig unbrauchbar sind, falls Du nur anhand derer zu
filtern versuchst.
Da ich die Quelle der Messdaten nicht kenne und anhand des Graphen auch
vermutlich mehrere Dinge in Frage kämen,
ist also deine Annahme es handelte sich um eine zeitabhängig
vorhersehbare Datenquelle ein wenig einschränkend.
Aber wie das so ist, gell?
wenn man nur einen Hammer hat ist jedes Problem ein Nagel ;)
Wenn man nur Audiodaten kennt, dann ist alles Frequenz.
'sid
von sid (Gast) >HUST! >und er schrieb >Nikolas S. schrieb: >> Formel: Y'1 = α*X1 + (1-α)*Y'0 >das ist ein Tiefpassfilter erster Ordnung In der Tat fehlen da einigen die Grundlagen. Das ist nämlich ein sehr einfaches Kalman-Filter, so wie 1+1 eine Rechnung ist.
Steff schrieb: >>Nikolas S. schrieb: >>> Formel: Y'1 = α*X1 + (1-α)*Y'0 > In der Tat fehlen da einigen die Grundlagen. Das ist nämlich ein sehr > einfaches Kalman-Filter, so wie 1+1 eine Rechnung ist. wüsste jetzt nicht inwiefern Du das als Kalman Filter auslegen kannst um ehrlich zu sein; würde aber gerne die Implementierung sehen, die aus dem Tiefpass erster ordnung da die Vorhersage zieht. Ich glaube eine kalman-esque Filterung bekämst Du daraus nur, falls Du den Koeffizienten ab dem Zweiten Schritt iterativ anpasst (mittelst), um dann darus dan den folgenden Wert vorabzuschätzen; hab ich so zwar noch nicht gesehen, könnte aber in der Tat funktionieren mit wenigen weiteren Schritten. Ist nicht das was sich die drei Jungs (kalman, bucy und der dessen Name mir immer entfällt.. stochinovitsch? ...ne tut mir leid ..weg!) sich dabei gedacht haben, würde aber vermutlich die zu Grunde liegende Idee vereinfacht abbilden können. die Gleichung für sich alleine indes (mit dem Übertrag von Y'1 als Y'0 für den folgenden Schritt) ist allerdings nur ein Tiefpass, kein kalman. 'sid
Da sollte man wohl lieber mal die Messwerte posten damit man mal ein Spektrum aufzeichnen und die Problemfrequenzen identifizieren kann.
Kalmanfilter setzt man eher bei autonomen Fahrzeugen ein oder auch in Navis, um auch bei Ausfall von einzelnen Sensoren den weiteren Verlauf abschätzen zu können. Beispiel: Auto fährt in Tunnel, GPS bricht ab, Lage- Und Beschleunigungssensoren liefern dem Kalmanfilter genug Daten, um die aktuelle Position abschätzen zu können. Oder auch für AUV`s. Da unter Wasser kein GPS-Signal genutzt werden kann, muss eine Intertialsensorik plus Kalmanfilter herhalten, um die aktuelle Position zu ermitteln.
Hallo, Tiefpassfilter sind, wie der Name schon sagt, Filter, die nur Tiefe Frequenzen durchlassen und höhere blockieren. Es gibt dafür verschiedene Ansätze. Dein exponentiell gewichtetes Mittelwertfilter ist ein Tiefpassfilter. Vorteil: Sehr einfache Implementierung. Nachteil: Es gibt keine einstellbare Grenzfrequenz. Die Kurve geht ab Frequenz = 0 kontinuierlich nach unten, wird aber auch sehr schnell weniger steil. Also kein sehr gutes Filter. Aber durchaus häufig ausreichend. Ein Kalmanfilter ist ein komplexerer Algorithmus, der Messdaten auf der Basis eines Modells filtert. Vereinfacht gesagt prüft der Kalmanfilter permanent, ob das gemessene Signal zum vorhergesagten Signal passt und regelt so gegen. Das Kalmanfilter ist besonders dann gut zu nutzen, wenn man mehrere Sensoren hat und diese fusionieren will. Das Filter besitzt ebenfalls die Fähigkeit, konstante Fehler, wie Offsets, automatisch zu korrigieren. Das kann man sich bspw so vorstellen: Du hast ein Auto, das sowohl einen Geschwindigkeitssensor am Rad hat, als auch einen Beschleunigungssensor. Der Beschleunigungssensor hat bspw ein Rauschen + Offset. Dein Filter soll möglichst präzise und mit hoher Frequenz die Geschwindigkeit des Autos anzeigen. Der Radsensor ist sehr genau, hat aber keine hohe Datenrate. Du kannst jetzt als Modell abbilden, dass das Beschleunigungssignal integriert die Geschwindigkeit ist. Das ist allerdings anfällig für Offsetfehler des Beschleunigungssignals. Ein Kalmanfilter kann nun mit dem richtigen Modell und den richtigen Koeffizienten, diese Sensordaten so fusionieren, dass durch den Radsensor der Offset des Beschleunigungssensors kompensiert werden kann, man aber trotzdem schnelle Werte für die Geschwindigkeit bekommt. Ein Kalmanfilter benötigt dazu aber ein möglichst genaues mathematisches Modell. Für eine einfache Tiefpassfilterung ist ein Kalmanfilter nicht geeignet.
>Für eine einfache Tiefpassfilterung ist ein Kalmanfilter nicht >geeignet. Doch, wenn du Variablen der Matrizen des Kalmanfilters entsprechend wählst, ergibt sich ein Tiefpassfilter. Der Tiefpassfilter ist in den Formeln des Kalmanfilters enthalten und wenn du so willst ist der Tiefpassfilter eine sehr reduzierte Form des Kalmanfilters. Zur Übung dürft ihr die Gleichungen für einen Kalmanfilter heraussuchen und die Matrizen entsprechend wählen.
Mess-Man schrieb: > ieber mal die Messwerte posten damit man mal ein > Spektrum aufzeichnen und die Problemfrequenzen identifizieren kann. Ack. Wenn ich das richtig sehe, hast Du ca. 25 Werte/div (bzw. 50/s wenn die Einheit der X-Achse Sekunden sind) und eine dominante Schwingung bei ca. Fs/6 - die Du offensichtlich loswerden möchtest? Das ginge mit mehr oder weniger steilem Tiefpass- oder Notchfilter - oder auch ganz anders durch Zerlegung des Signals in mehrere Moden (z.B. Wavelettransform). Was in Deinem Fall passt und welcher Aufwand dafür nötig ist, hängt von der spezifischen Messsituation und dem Ziel Deiner Analyse ab.
:
Bearbeitet durch User
Wenn Du die über dem Signal liegende Schwingung loswerden willst gibt es ein recht einfaches Verfahren: Suche die oberen und unteren Peaks des Signals und ziehe jeweils ein Spline durch die Punkte. Von den beiden erzeugten Splines nimmst Du dann für jeden X-Wert das Mittel beider Kurven. Wird gern in der Seismologie angewendet um Frequenzbereiche voneinander zu trennen.
Sag mal ich starre jetzt seit Tagen auf den Graphen da oben irgendwie kommt der mir so bekannt vor, kann es sein, dass ich seinen Bruder mal kennengelernt hab? ich erklär mal kurz was ich meine.. ich hab mal mein Telefunkofon den Beschleunigungssensor überwachen lassen um mir daraus (noch auf dem telefon allerdings) einen Graphen zu generieren. (Gesamtvektor aller drei Richtungsachsen) die Scalen waren nicht unähnlich (Zeit in zehntel sekunden auf der X, Beschleunigung in m/s² auf der y-Achse 0-10) und diese hübsche periodische Schwankung grade als die Kurve sich im Mittel nach oben bewegt, geführt und gefolgt von chaotischeren Werten (Resonanzschwingung der Motordrehzal die sich übers Handgelenk und den Oberkörper in meine Brusttasche ins Handy frisst) das sah alles sehr ähnlich aus wirklich, 8m/s² ist schon schnittig, kommt aber sogar (je nach Moped) hin. Oh und ich hab's mit nem iterativen kalmanfilter versucht, schien mir dafür nicht das Richtige zu sein, hab mich dann für jerk-compressed-data entscheiden (also m/s³ begrenzt und dann mit mildem Tiefpass gespeichert) das ganze lief dann zur grafischen Angeberei in einen rekursiven kalman um einen netten niedrig aufgelösten dafür hübsch interpolierten Graphen zu malen. (war ja eh nur eye-candy und hatte weiter keine relevante Funktion) Also, ist das möglich, dass das da oben AUCH Daten einer Beschleunigungsmessung sind? Nur um mich zu heilen vom michlangsam anfallenden Wahnsinn, (den ich sonst nur kenne wenn ich alten entfernten Bekannten zufällig ins gesicht schaue und mir der Name nicht einfallen will) 'sid
sid schrieb: > kann es sein, dass ich seinen Bruder mal kennengelernt hab? könnte auch sein, dass es die Schwester "Interferrenz" oder Cousin "Rauschen" ist. Diese Messwerte haben ganz offensichtlich eine Schwingung drin, die entweder Störung, oder (wahrscheinlicher) Bewegung sind und genau die wäre erst einmal wegzufiltern. Genau genommen darf überhaupt nur DIE weggefiltert werden, wenn man noch eine Information über haben will.
Erstmal vielen Dank für eure konstruktiven Tipps und Vorschläge! Ich habe es jetzt tatsächlich so gemacht, dass ich verschiedene Methoden ausprobiert habe und die dann verglichen hab. Letztendlich habe ich mich für einen Median aus den letzten 10 Sensorwerten entschieden. Dann werden auch die Ausreißer (im Graph nicht sichtbar) nicht berücksichtigt und ich bekomme eine relativ glatte Kurve, wie ich mir sie vorgestellt habe. sid schrieb: > Sag mal ich starre jetzt seit Tagen auf den Graphen da oben > irgendwie kommt der mir so bekannt vor, > kann es sein, dass ich seinen Bruder mal kennengelernt hab? Da ich nur eine Schwester habe... eher nicht :D Nur zur Erklärung, was es mit dem Graph aufsich hat... Der Graph zeigt einen Winkel der mit einem Beschleunigungssensor erfasst wurde. Deshalb auch die Kurvenbezeichnung "acc Angle".
sid schrieb: > Also, ist das möglich, dass das da oben AUCH Daten einer > Beschleunigungsmessung sind? Nikolas S. schrieb: > ... eher nicht :D > ... > Der Graph zeigt einen Winkel der mit einem Beschleunigungssensor erfasst > wurde. Naja, aber nah genug dran ;) 'sid
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.