Ich habe einen kontinuierlichen Wert, für die Id wie zu berechnen einen exponentiellen gleitenden Durchschnitt. Normalerweise verwendet man nur die Standardformel dafür: wobei S n der neue Durchschnitt ist, Alpha das Alpha ist, Y die Stichprobe ist und S n-1 der vorherige Durchschnitt ist. Leider, aufgrund verschiedener Fragen habe ich nicht eine konsistente Probe Zeit. Ich kann wissen, dass ich höchstens sagen kann, einmal pro Millisekunde, aber aufgrund von Faktoren aus meiner Kontrolle, kann ich nicht in der Lage, eine Probe für mehrere Millisekunden zu einer Zeit zu nehmen. Eine wahrscheinlich häufiger Fall ist jedoch, dass ich einfache Probe ein wenig früh oder spät: anstelle der Probenahme bei 0, 1 und 2 ms. I-Probe bei 0, 0,9 und 2,1 ms. Ich erwarte, dass, ungeachtet der Verzögerungen, meine Abtastfrequenz weit, weit über der Nyquist-Grenze liegen wird, und daher brauche ich mir keine Sorgen um Aliasing. Ich vermute, dass ich dies in einer mehr oder weniger vernünftigen Weise durch die Änderung der alpha passend, basierend auf der Länge der Zeit seit der letzten Probe. Ein Teil meiner Überlegung, dass dies funktionieren wird, ist, dass die EMA linear zwischen dem vorherigen Datenpunkt und dem aktuellen interpoliert. Wenn wir die Berechnung einer EMA der folgenden Liste von Proben in Intervallen t: 0,1,2,3,4 betrachten. Wir sollten das gleiche Ergebnis erhalten, wenn wir das Intervall 2t verwenden, bei dem die Eingänge 0,2,4 werden. Wenn die EMA davon ausgegangen ist, dass bei t 2 der Wert 2 seit t 0 war. Das wäre das gleiche wie das Intervall t Berechnung Berechnung auf 0,2,2,4,4, die ihr nicht tun. Oder macht das überhaupt Sinn Kann mir jemand sagen, wie man das Alpha passend ändert Bitte zeigen Sie Ihre Arbeit. D. h. Zeigen Sie mir die Mathematik, die beweist, dass Ihre Methode wirklich das Richtige tut. Sie sollten nicht erhalten die gleiche EMA für verschiedene Eingabe. Denken Sie an EMA als Filter, ist das Sampling bei 2t äquivalent zu Down-Sampling, und der Filter wird einen anderen Ausgang zu geben. Dies ist mir klar, da 0,2,4 höherfrequente Komponenten als 0,1,2,3,4 enthält. Sofern die Frage ist, wie kann ich ändern Sie den Filter on the fly, damit es die gleiche Ausgabe. Vielleicht fehle ich etwas ndash freespace Aber der Eingang ist nicht anders, it39s nur selten abgetastet. 0,2,4 in Intervallen 2t ist wie 0,, 2,, 4 in Intervallen t, wobei die zeigt, dass die Probe ignoriert wird ndash Curt Sampson Jun 21 09 um 23:45 Diese Antwort auf meinem guten Verständnis von Tiefpass Filter (exponentiellen gleitenden Durchschnitt ist wirklich nur ein einpoliges Tiefpassfilter), aber mein dunstiges Verständnis dessen, was Sie suchen. Ich denke, das folgende ist, was Sie wollen: Erstens können Sie Ihre Gleichung ein wenig zu vereinfachen (sieht komplizierter, aber es ist einfacher in Code). Im gehend, Y für Ausgang und X für Eingang zu verwenden (anstelle von S für Ausgang und Y für Eingang, wie Sie getan haben). Zweitens ist der Wert von alpha hier gleich 1-e - Deltat / tau, wobei Deltat die Zeit zwischen den Abtastwerten ist und tau die Zeitkonstante des Tiefpaßfilters ist. Ich sage gleich in Anführungszeichen, weil dies gut funktioniert, wenn Deltat / tau ist klein im Vergleich zu 1, und alpha 1-e - Deltat / tau asymp Deltat / tau. (Aber nicht zu klein: youll laufen in Quantisierung Fragen, und wenn Sie auf einige exotische Techniken, die Sie benötigen in der Regel eine zusätzliche N Bits Auflösung in Ihrem Zustand Variable S, wo N-Log 2 (alpha).) Für größere Werte von Deltat / Tau beginnt der Filtereffekt zu verschwinden, bis Sie zu dem Punkt kommen, an dem Alpha in der Nähe von 1 liegt, und Sie haben grundsätzlich nur den Eingang dem Ausgang zuzuordnen. Dies sollte ordnungsgemäß mit unterschiedlichen Werten von Deltat funktionieren (die Variation von Deltat ist nicht sehr wichtig, solange alpha klein ist, sonst laufen Sie in einige ziemlich seltsame Nyquist Fragen / Aliasing / etc.), und wenn Sie an einem Prozessor arbeiten Wo die Multiplikation billiger als die Division ist, oder Festkomma-Probleme wichtig sind, vorberechnen omega 1 / tau und erwägen, die Formel für alpha zu approximieren. Wenn Sie wirklich wissen wollen, wie die Formel alpha 1-e - Deltat / tau abzuleiten ist, dann betrachten wir ihre Differentialgleichungsquelle: die, wenn X eine Einheitsschrittfunktion ist, die Lösung Y 1 - e - t / tau hat. Für kleine Werte von Deltat kann das Derivat durch DeltaY / Deltat angenähert werden, was zu Ytau DeltaY / Deltat X DeltaY (XY) (Deltat / tau) alpha (XY) führt und die Extrapolation von alpha 1-e - Deltat / tau stammt Versucht, das Verhalten mit der Einheit Schritt Funktion Fall entsprechen. Würden Sie bitte erläutern, auf die Quottrying, um das Verhaltenquot Teil Match Ich verstehe Ihre kontinuierliche Zeit-Lösung Y 1 - exp (-t47) und seine Generalisierung auf eine skalierte Schritt-Funktion mit der Größe x und Anfangszustand y (0). Aber I39m nicht sehen, wie diese Ideen zusammen, um Ihr Ergebnis zu erzielen. Ndash Rhys Ulerich May 4 13 at 22:34 Dies ist keine vollständige Antwort, aber kann der Anfang von einem sein. Seine so weit wie ich mit diesem in einer Stunde oder so zu spielen Im Posting es als ein Beispiel für das, was ich suche, und vielleicht eine Inspiration für andere, die an dem Problem. Ich beginne mit S 0. Was der Mittelwert ist, der sich aus dem vorherigen Mittelwert S -1 und dem Abtastwert Y 0 bei t 0 ergibt. (T & sub1; - t & sub0;) ist mein Abtastintervall und & alpha; wird auf das eingestellt, was für dieses Abtastintervall und den Zeitraum geeignet ist, über den ich durchschnittlich möchte. Ich überlegte, was passiert, wenn ich die Probe bei t 1 vermisse und stattdessen mit der mit t 2 getroffenen Probe Y 2 zu tun habe. Nun können wir mit der Erweiterung der Gleichung beginnen, um zu sehen, was passiert wäre, wenn wir gehabt hätten. Y 1: Ich bemerke, dass die Reihe unendlich auf diese Weise zu erweitern scheint, weil wir die S n auf der rechten Seite unendlich ersetzen können: Ok , Also sein nicht wirklich ein Polynom (albernes me), aber, wenn wir den Anfangsbegriff durch eins multiplizieren, sehen wir dann ein Muster: Hm: es ist eine exponentielle Reihe. Quelle Überraschung Stellen Sie sich vor, dass kommen aus der Gleichung für einen exponentiellen gleitenden Durchschnitt Also irgendwie, habe ich diese x 0 x 1 x 2 x 3. Ding gehen, und Im sicher Im riechen e oder einen natürlichen Logarithmus treten hier herum, aber ich kann mich nicht erinnern, wo ich als nächstes ging, bevor ich aus der Zeit lief. Jede Antwort auf diese Frage oder ein Korrektheitsnachweis einer solchen Antwort hängt stark von den Daten ab, die Sie messen. Wenn Ihre Proben bei t 0 0ms genommen wurden. T 1 0,9 ms und t 2 2,1 ms. Aber Ihre Alpha-Auswahl basiert auf 1-ms-Intervallen, weshalb Sie ein lokal angepasstes Alpha n wünschen. Der Beweis der Korrektheit der Wahl würde bedeuten, die Probenwerte bei t1ms und t2ms zu kennen. Dies führt zu der Frage: Können Sie Ihre Daten resonable interpolieren, um vernünftige Vermutungen, was in-between Werte haben könnte Oder können Sie sogar den Durchschnitt selbst interpolieren Wenn keiner von diesen möglich ist, dann soweit ich es sehe, die logische Die Wahl eines Zwischenwerts Y (t) ist der zuletzt berechnete Durchschnitt. D. h. Y (t) Asymp S n, wobei n maxmial ist, so dass t n ltt. Diese Wahl hat eine einfache Konsequenz: Lassen Sie alpha allein, egal was der Zeitunterschied war. Wenn auf der anderen Seite ist es möglich, Ihre Werte zu interpolieren, dann geben Sie Ihnen averagable Konstanten-Intervall-Samples. Schließlich, wenn sein sogar möglich ist, den Durchschnitt selbst zu interpolieren, würde das die Frage bedeutungslos machen. Ich glaube, ich kann meine Daten interpolieren: angesichts der Tatsache, dass I39m es in diskreten Intervallen, I39m, die dies bereits mit einem Standard-EMA Anytime tun, davon ausgehen, dass ich brauche Dass es funktioniert sowie eine Standard-EMA, die auch hat ein falsches Ergebnis zu produzieren, wenn die Werte nicht ändern, ziemlich gleichmäßig zwischen Sample-Perioden. Ndash Curt Sampson Aber das ist, was ich sagen: Wenn Sie die EMA eine Interpolation Ihrer Werte, you39re getan, wenn Sie verlassen Alpha, wie es ist (weil das Einfügen der jüngsten Durchschnitt, wie Y doesn39t ändern den Durchschnitt) . Wenn Sie sagen, dass Sie etwas brauchen, dass Zehnarbeit sowie eine Standard-EMAquot - was ist falsch mit dem Original Wenn Sie nicht mehr Informationen über die Daten, die Sie gemessen haben, werden alle lokalen Anpassungen an Alpha am besten willkürlich sein. Ndash balpha 9830 Jun 21 09 at 15:31 Ich würde den Alpha-Wert allein zu verlassen, und füllen Sie die fehlenden Daten. Da Sie nicht wissen, was während der Zeit geschieht, wenn Sie Probe nicht können, können Sie diese Proben mit 0s füllen, oder halten Sie den vorherigen Wert stabil und verwenden Sie diese Werte für die EMA. Oder eine Rückwärtsinterpolation, sobald Sie ein neues Sample haben, die fehlenden Werte ausfüllen und die EMA neu berechnen. Was ich versuche zu bekommen ist, haben Sie eine Eingabe xn, die Löcher hat. Es gibt keine Möglichkeit, um die Tatsache, dass Sie Daten fehlen. Sie können also einen Halten nullter Ordnung verwenden oder auf null setzen oder eine Art von Interpolation zwischen xn und xnM. Wobei M die Anzahl der fehlenden Proben und n der Beginn der Lücke ist. Eventuell sogar mit Werten vor n. Ich denke, dass nur Variieren der Alpha tatsächlich geben mir die richtige Interpolation zwischen den beiden Punkten, die Sie sprechen, aber in einer Viel einfacher Weg. Darüber hinaus denke ich, dass die Veränderung der Alpha wird auch ordnungsgemäß befassen sich mit Proben, die zwischen den Standard-Probenahme-Intervallen. Mit anderen Worten, I39m auf der Suche nach dem, was Sie beschrieben, aber versuchen, Mathematik, um herauszufinden, die einfache Möglichkeit, es zu tun. Ndash Curt Sampson Ich glaube nicht, es gibt so ein Biest wie quotproper Interpolationquot. Sie wissen einfach nicht, was in der Zeit passiert ist, die Sie nicht probieren. Gute und schlechte Interpolation impliziert etwas Wissen, was Sie verpasst haben, da Sie messen müssen, um zu beurteilen, ob eine Interpolation gut oder schlecht ist. Obwohl dies gesagt, können Sie Begrenzungen, dh mit maximaler Beschleunigung, Geschwindigkeit, etc. zu setzen. Ich denke, wenn Sie wissen, wie die fehlenden Daten Modell, dann würden Sie nur Modell die fehlenden Daten, dann wenden Sie den EMA-Algorithmus ohne Veränderung eher Als das Ändern von alpha. Just my 2c :) ndash freespace Das ist genau das, was ich in meinem Bearbeiten auf die Frage vor 15 Minuten: quotYou einfach don39t wissen, was passiert in der Zeit, die Sie nicht Stichproben, aber that39s true Auch wenn Sie in jedem bestimmten Intervall Probe. So meine Nyquist-Kontemplation: Solange Sie wissen, die Wellenform doesn39t Richtungen ändern mehr als jedes Paar von Proben, die tatsächliche Probe-Intervall shouldn39t Angelegenheit, und sollte in der Lage sein zu variieren. Die EMA-Gleichung scheint mir genau so zu berechnen, als ob sich die Wellenform linear vom letzten Abtastwert zum aktuellen verändert hätte. Ndash Curt Sampson Ich glaube nicht, dass das stimmt. Das Nyquist39s-Theorem erfordert mindestens 2 Abtastungen pro Periode, um das Signal eindeutig identifizieren zu können. Wenn Sie das nicht tun, erhalten Sie Aliasing. Es wäre das gleiche wie das Sampling als fs1 für eine Zeit, dann fs2, dann zurück zu fs1, und Sie erhalten Aliasing in die Daten, wenn Sie mit fs2 Probe, wenn fs2 ist unter dem Nyquist-Limit. Ich muss auch gestehen, ich verstehe nicht, was du meinst, durch Quotwellenformänderungen linear vom letzten Sample zum aktuellen onequot. Könnten Sie bitte erklären, Cheers, Steve. Ndash freespace Dies ist ähnlich wie ein offenes Problem auf meiner Todo-Liste. Ich habe ein Schema ausgearbeitet, zu einem gewissen Grad, aber haben keine mathematische Arbeit, um diese Anregung noch zu unterstützen. Update amp summary: Möchte den Glättungsfaktor (alpha) unabhängig vom Kompensationsfaktor behalten (was ich hier als beta beziehe). Jasons ausgezeichnete Antwort bereits akzeptiert hier funktioniert super für mich. Wenn Sie auch die Zeit seit der letzten Abtastung messen können (in gerundeten Vielfachen Ihrer konstanten Abtastzeit - also 7,8 ms, da die letzte Probe 8 Einheiten betragen würde), könnte dies dazu verwendet werden, die Glättung mehrfach anzuwenden. Wenden Sie in diesem Fall die Formel 8 mal an. Sie haben effektiv eine Glättung vorgespannt mehr auf den aktuellen Wert. Um eine bessere Glättung zu erhalten, müssen wir das Alpha zwicken, während wir die Formel 8 mal im vorherigen Fall anwenden. Was wird diese Glättung Approximation verpassen Es hat bereits 7 Proben im obigen Beispiel verpasst Dies wurde in Schritt 1 mit einer abgeflachten Wiederanwendung des aktuellen Wertes zusätzlich 7 mal angenähert Wenn wir einen Approximationsfaktor beta, die zusammen mit alpha angewendet wird (Als alphabeta statt nur alpha), gehen wir davon aus, dass sich die 7 verpassten Samples zwischen den vorherigen und den aktuellen Sample-Werten sanft veränderten. Ich habe darüber nachgedacht, aber ein wenig mucking about mit der Mathematik hat mich auf den Punkt, wo ich glaube, dass, anstatt die Anwendung der Formel achtmal mit dem Beispielwert, kann ich eine Berechnung zu tun Von einem neuen Alpha, das mir erlauben wird, die Formel einmal anzuwenden, und geben mir das gleiche Ergebnis. Ferner würde dies automatisch mit der Ausgabe von Proben, die von exakten Abtastzeitpunkten versetzt sind, behandelt. Ndash Curt Sampson Jun 21 09 at 13:47 Die einzige Anwendung ist in Ordnung. Was ich noch nicht sicher bin, ist, wie gut die Annäherung der 7 fehlenden Werte ist. Wenn die kontinuierliche Bewegung macht den Wert Jitter eine Menge über die 8 Millisekunden, die Annäherungen können ganz aus der Realität. Aber, wenn Sie Probenahme bei 1ms (höchste Auflösung ohne die verzögerten Proben) haben Sie bereits dachte der Jitter innerhalb von 1ms ist nicht relevant. Funktioniert diese Argumentation für Sie (ich versuche immer noch, mich zu überzeugen). Ndash nik Jun 21 09 at 14:08 Richtig. Das ist der Faktor Beta aus meiner Beschreibung. Ein Betafaktor würde basierend auf dem Differenzintervall und den aktuellen und vorherigen Abtastwerten berechnet. Das neue Alpha wird (Alphabet), aber es wird nur für diese Probe verwendet werden. Während Sie das Alpha in der Formel 39 zu haben scheinen, neige ich zu konstantem Alpha (Glättungsfaktor) und einem unabhängig berechneten Beta (einem Tuningfaktor), der die gerade ausgefallenen Samples kompensiert. Ndash nik Jun 21 09 um 15: 23Exponentieller Filter Diese Seite beschreibt exponentielle Filterung, die einfachste und beliebteste Filter. Dies ist Teil des Abschnitts Filterung, der Teil eines Leitfadens zur Fehlererkennung und - diagnose ist. Überblick, Zeitkonstante und Analogäquivalent Der einfachste Filter ist der Exponentialfilter. Es hat nur einen Abstimmungsparameter (außer dem Probenintervall). Es erfordert die Speicherung nur einer Variablen - der vorherigen Ausgabe. Es ist ein IIR (autoregressive) Filter - die Auswirkungen einer Eingangsveränderung Zerfall exponentiell, bis die Grenzen der Displays oder Computer Arithmetik verstecken. In verschiedenen Disziplinen wird die Verwendung dieses Filters auch als 8220exponentielle Glättung8221 bezeichnet. In einigen Disziplinen wie der Investitionsanalyse wird der exponentielle Filter als 8220Exponential Weighted Moving Average8221 (EWMA) oder nur 8220Exponential Moving Average8221 (EMA) bezeichnet. Dies missbräuchlich die traditionelle ARMA 8220moving average8221 Terminologie der Zeitreihenanalyse, da es keinen Eingabehistorie gibt, der verwendet wird - nur die aktuelle Eingabe. Es ist das diskrete Zeit-Äquivalent der 8220 erster Ordnung lag8221, die üblicherweise in der analogen Modellierung von kontinuierlichen Zeitsteuerungssystemen verwendet wird. In elektrischen Schaltkreisen ist ein RC-Filter (Filter mit einem Widerstand und einem Kondensator) eine Verzögerung erster Ordnung. Bei der Betonung der Analogie zu analogen Schaltungen, ist der einzige Tuning-Parameter die 8220time constant8221, in der Regel als klein geschriebenen griechischen Buchstaben Tau () geschrieben. Tatsächlich entsprechen die Werte bei den diskreten Abtastzeiten genau der äquivalenten kontinuierlichen Zeitverzögerung mit der gleichen Zeitkonstante. Die Beziehung zwischen der digitalen Implementierung und der Zeitkonstante wird in den folgenden Gleichungen gezeigt. Exponentielle Filtergleichungen und Initialisierung Das Exponentialfilter ist eine gewichtete Kombination der vorherigen Schätzung (Ausgabe) mit den neuesten Eingangsdaten, wobei die Summe der Gewichtungen gleich 1 ist, so dass die Ausgabe mit dem Eingang im stationären Zustand übereinstimmt. Nach der bereits eingeführten Filternotation ist y (k) ay (k - 1) (1 - a) x (k) wobei x (k) die Roheingabe zum Zeitschritt ky (k) die gefilterte Ausgabe zum Zeitschritt ka ist Ist eine Konstante zwischen 0 und 1, normalerweise zwischen 0,8 und 0,99. (A-1) oder a wird manchmal die 8220-Glättungskonstante8221 genannt. Für Systeme mit einem festen Zeitschritt T zwischen Abtastwerten wird die Konstante 8220a8221 nur dann berechnet und gespeichert, wenn der Anwendungsentwickler einen neuen Wert der gewünschten Zeitkonstante angibt. Bei Systemen mit Datenabtastung in unregelmäßigen Abständen muss bei jedem Zeitschritt die exponentielle Funktion verwendet werden, wobei T die Zeit seit dem vorhergehenden Abtastwert ist. Der Filterausgang wird normalerweise initialisiert, um dem ersten Eingang zu entsprechen. Wenn die Zeitkonstante 0 nähert, geht a auf Null, so dass keine Filterung 8211 der Ausgang dem neuen Eingang entspricht. Da die Zeitkonstante sehr groß wird, werden Ansätze 1, so dass neue Eingabe fast ignoriert wird 8211 sehr starkes Filtern. Die obige Filtergleichung kann in folgendes Vorhersagekorrektor-Äquivalent umgeordnet werden: Diese Form macht deutlich, dass die variable Schätzung (Ausgabe des Filters) unverändert von der vorherigen Schätzung y (k-1) plus einem Korrekturterm basiert wird Auf die unerwartete 8220innovation8221 - die Differenz zwischen dem neuen Eingang x (k) und der Vorhersage y (k-1). Diese Form ist auch das Ergebnis der Ableitung des Exponentialfilters als einfacher Spezialfall eines Kalman-Filters. Die die optimale Lösung für ein Schätzproblem mit einem bestimmten Satz von Annahmen ist. Schrittantwort Eine Möglichkeit, den Betrieb des Exponentialfilters zu visualisieren, besteht darin, sein Ansprechen über die Zeit auf eine Stufeneingabe aufzuzeichnen. Das heißt, beginnend mit dem Filtereingang und dem Ausgang bei 0 wird der Eingangswert plötzlich auf 1 geändert. Die resultierenden Werte sind nachstehend aufgetragen: In dem obigen Diagramm wird die Zeit durch die Filterzeitkonstante tau geteilt, so daß man leichter prognostizieren kann Die Ergebnisse für einen beliebigen Zeitraum, für jeden Wert der Filterzeitkonstante. Nach einer Zeit gleich der Zeitkonstante steigt der Filterausgang auf 63,21 seines Endwertes an. Nach einer Zeit gleich 2 Zeitkonstanten steigt der Wert auf 86,47 seines Endwertes an. Die Ausgänge nach Zeiten gleich 3,4 und 5 Zeitkonstanten sind jeweils 95,02, 98,17 bzw. 99,33 des Endwerts. Da der Filter linear ist, bedeutet dies, dass diese Prozentsätze für jede Größenordnung der Schrittänderung verwendet werden können, nicht nur für den hier verwendeten Wert 1. Obwohl die Stufenantwort in der Theorie aus praktischer Sicht eine unendliche Zeit in Anspruch nimmt, sollte man an den exponentiellen Filter 98 bis 99 8220done8221 denken, der nach einer Zeit gleich 4 bis 5 Filterzeitkonstanten reagiert. Variationen des Exponentialfilters Es gibt eine Variation des Exponentialfilters mit dem Namen 8220nonlinearem exponentiellem Filter8221 Weber, 1980. Es soll starkes Rauschen innerhalb einer bestimmten 8220typical8221 Amplitude filtern, reagiert aber schneller auf größere Änderungen. Copyright 2010 - 2013, Greg Stanley Teilen Sie diese Seite:
Comments
Post a Comment