Ich habe einen stetigen Wert, für den Id einen exponentiellen gleitenden Durchschnitt berechnen möchte. Normalerweise nennt man einfach die Standardformel dafür: wobei S n der neue Mittelwert ist, Alpha das Alpha ist, Y die Probe ist und S n-1 der vorhergehende Durchschnitt ist. Leider, wegen der verschiedenen Ausgaben habe ich nicht eine konsistente Probezeit. Ich kann wissen, dass ich am meisten probieren kann, sagen wir einmal pro Millisekunde, aber aufgrund von Faktoren aus meiner Kontrolle, kann ich nicht in der Lage sein, eine Probe für mehrere Millisekunden zu einer Zeit zu nehmen. Ein wahrscheinlicher häufiger Fall ist jedoch, dass ich einfache Probe ein bisschen früh oder spät: anstatt zu probieren bei 0, 1 und 2 ms. Ich Probe bei 0, 0,9 und 2,1 ms. Ich gehe davon aus, dass, unabhängig von Verzögerungen, meine Stichprobenhäufigkeit weit, weit über der Nyquist-Grenze liegen wird, und so brauche ich mir keine Sorgen um Aliasing. Ich rechne damit, dass ich dies in einer mehr oder weniger vernünftigen Weise behandeln kann, indem ich das Alpha entsprechend ändere, basierend auf der Zeitdauer seit der letzten Probe. Ein Teil meiner Argumentation, dass dies funktioniert, ist, dass die EMA linear zwischen dem vorherigen Datenpunkt und dem aktuellen interpoliert. Wenn wir die Berechnung einer EMA der folgenden Liste der Proben in Intervallen t: 0,1,2,3,4 betrachten, Wir sollten das gleiche Ergebnis erhalten, wenn wir das Intervall 2t verwenden, wo die Eingänge 0,2,4 werden, rechts Wenn die EMA davon ausgegangen war, 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, was es nicht tut. Oder macht das überhaupt Sinn, Kann mir jemand sagen, wie man das Alpha entsprechend ändert, bitte zeig deine Arbeit. I. e. Zeig mir die Mathematik, die beweist, dass deine Methode wirklich das Richtige tut. Gefragt am 21. Juni 09 um 13:05 Sie sollten nicht bekommen die gleiche EMA für verschiedene Eingabe. Denken Sie an EMA als Filter, die Probenahme bei 2t ist gleichbedeutend mit Down-Sampling, und der Filter wird einen anderen Ausgang geben. Das liegt mir seit 0,2,4 für höhere Frequenzkomponenten als 0,1,2,3,4. Es sei denn, die Frage ist, wie ändere ich den Filter auf der Fliege, um es die gleiche Ausgabe zu geben. Vielleicht bin ich fehlt etwas ndash freespace Aber die Eingabe ist nicht anders, it39s nur selten abgetastet. 0,2,4 in Intervallen 2t ist wie 0,, 2,, 4 in Intervallen t, wo die anzeigt, dass die Probe ignoriert wird ndash Curt Sampson Jun 21 09 um 23:45 Diese Antwort basiert auf meinem guten Verständnis von Tiefpass Filter (exponentieller gleitender Durchschnitt ist eigentlich nur ein einpoliger Tiefpassfilter), aber mein dunstiges Verständnis dessen, was du suchst. Ich denke, das folgende ist, was Sie wollen: Erstens können Sie Ihre Gleichung ein wenig vereinfachen (sieht komplizierter, aber es ist einfacher in Code). Ich gehe Y für Ausgang und X für Eingang (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-Deltattau, wobei Deltat die Zeit zwischen den Proben ist und tau die Zeitkonstante des Tiefpaßfilters ist. Ich sage gleich in Zitaten, denn das funktioniert gut, wenn Deltattau klein ist im Vergleich zu 1 und Alpha 1-e-Deltattau Asymp Deltattau. (Aber nicht zu klein: youll laufen in Quantisierung Fragen, und wenn Sie auf einige exotische Techniken, die Sie in der Regel benötigen eine zusätzliche N Bits der Auflösung in Ihrem Zustand Variable S, wo N-Log 2 (Alpha).) Für größere Werte von Deltattau Der Filtereffekt beginnt zu verschwinden, bis du zu dem Punkt kommst, wo Alpha nahe bei 1 ist und du bist im Grunde nur die Eingabe der Eingabe an den Ausgang. Dies sollte mit verschiedenen Werten von Deltat richtig funktionieren (die Variation von Deltat ist nicht sehr wichtig, solange Alpha klein ist, sonst werden Sie in einige ziemlich komische Nyquist-Probleme Aliasing etc. laufen), und wenn Sie an einem Prozessor arbeiten, wo Multiplikation Ist billiger als Teilung, oder Fixpunkt Fragen sind wichtig, vorkalkulieren Omega 1tau, und erwägen versuchen, die Formel für Alpha zu approximieren. Wenn Sie wirklich wissen wollen, wie man die Formel alpha 1-e - Deltattau ableitet, dann betrachten wir seine Differentialgleichungsquelle: welche, wenn X eine Einheitsschrittfunktion ist, die Lösung Y 1 - e - ttau hat. Für kleine Werte von Deltat kann das Derivat durch DeltaYDeltat angenähert werden, wobei Y tau DeltaYDeltat X DeltaY (XY) (Deltattau) alpha (XY) erhalten wird und die Extrapolation von alpha 1-e - Deltattau aus dem Versuch besteht, das Verhalten mit dem Einheit Schritt Funktionsfall. Möchten Sie bitte das Quottrying ausarbeiten, um dem Verhaltenquot Teil zu entsprechen, verstehe ich Ihre kontinuierliche Lösung Y 1 - exp (-t47) und seine Verallgemeinerung auf eine skalierte Schrittfunktion mit Größe x und Anfangsbedingung y (0). Aber ich sehe nicht, wie man diese Ideen zusammenbringt, um dein Ergebnis zu erzielen. Ndash Rhys Ulerich Mai 4 13 um 22:34 Dies ist keine vollständige Antwort, aber vielleicht der Anfang von einem. Es ist 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. Welches der Durchschnitt ist, der sich aus dem vorherigen Durchschnitt S -1 ergibt, und der Abtastwert Y 0, der bei t 0 genommen wird. (T & sub1; - t & sub0;) ist mein Abtastintervall und alpha ist auf das gesetzt, was für dieses Abtastintervall und den Zeitraum, für den ich durchschnittlich sein möchte, geeignet ist. Ich habe überlegt, was passiert, wenn ich die Probe bei t 1 vermisse und stattdessen mit der Probe Y 2, die bei t 2 genommen wird, machen muss. Nun, wir können damit beginnen, die Gleichung zu erweitern, um zu sehen, was passiert wäre, wenn wir Y 1 gehabt hätten: Ich merke, dass die Serie auf diese Weise unendlich zu erweitern scheint, weil wir die S n in der rechten Seite auf unbestimmte Zeit ersetzen können: Ok , Also ist es nicht wirklich ein Polynom (dumm mich), aber wenn wir den Anfangslaufpunkt um eins multiplizieren, sehen wir dann ein Muster: Hm: seine eine exponentielle Reihe. Quelle Überraschung Stellen Sie sich vor, dass aus der Gleichung für einen exponentiellen gleitenden Durchschnitt herauskommt So sowieso habe ich diese x 0 x 1 x 2 x 3. Ding geht, und Im sicher Im riechen e oder ein natürlicher Logarithmus hier herum, aber ich kann mich nicht erinnern, wo ich war weiter, bevor ich lief aus der Zeit. Jede Antwort auf diese Frage, oder ein Beweis für die Richtigkeit einer solchen Antwort, hängt stark von den Daten, die Sie messen. Wenn Ihre Proben bei t 0 0ms aufgenommen wurden. T 1 0,9 ms und t 2 2,1 ms Aber deine alpha-Auswahl basiert auf 1-ms-Intervallen und wünscht also ein lokal angepasstes Alpha n. Der Nachweis der Korrektheit der Wahl würde bedeuten, die Stichprobenwerte bei t1ms und t2ms zu kennen. Dies führt zu der Frage: Können Sie Ihre Daten resonativ interpolieren, um gesunde Vermutungen darüber zu haben, was zwischen den Werten liegen könnte oder können Sie sogar den Durchschnitt selbst interpolieren Wenn keiner von ihnen möglich ist, dann so weit ich es sehe, ist das logische Die Wahl eines Zwischenwertes Y (t) ist der zuletzt berechnete Durchschnitt. D. h. Y (t) asymp S n wobei n maxmial ist, so daß t n ltt. Diese Wahl hat eine einfache Konsequenz: Lassen Sie Alpha allein, egal was der Zeitunterschied war. Wenn es andererseits möglich ist, Ihre Werte zu interpolieren, dann geben wir Ihnen averagable Konstantintervallproben. Schließlich, wenn es sogar möglich wäre, den Durchschnitt selbst zu interpolieren, würde das die Frage bedeutungslos machen. Ich würde glauben, dass ich meine Daten interpolieren kann: Angesichts der Tatsache, dass I39m es in diskreten Intervallen probiert, I39m schon mit einem Standard-EMA sowieso, nehme ich an, dass ich ein brauche. Deutsch: www. tab. fzk. de/de/projekt/zusammenf...ng/ab117.htm. Englisch: www. tab. fzk. de/en/projekt/zusammenf...ng/ab117.htm Ich glaube, ich kann meine Daten interpolieren: Deutsch: www. tab. fzk. de/de/projekt/zusammenf...ng/ab117.htm. Englisch: www. tab. fzk. de/en/projekt/zusammenf...ng/ab117.htm Das bedeutet, dass es funktioniert, sowie eine Standard - EMA, die auch ein falsches Ergebnis erzielt hat, Wenn du die EMA eine Interpolation deiner Werte betrachtest, dann bist du fertig, wenn du Alpha verlässt, wie es ist (weil du den letzten Durchschnitt einbringst, während Y den Tag nicht ändert), wenn du den Durchschnitt überschätzst. Deutsch:. Englisch: v3.espacenet. com/textdoc? DB = EPODOC & ... PN = . Wenn du sagst, dass du etwas brauchst, das so gut wie ein Standard-EMAquot ist - was ist mit dem Original falsch. Wenn du nicht mehr über die Daten informiert hast, musst du irgendwelche lokalen Anpassungen an Alpha am besten willkürlich sein. Ndash balpha 9830 Jun 21 09 um 15:31 Ich würde den Alpha-Wert allein lassen und die fehlenden Daten ausfüllen. Da Sie nicht wissen, was passiert während der Zeit, wenn Sie nicht Probe, können Sie füllen diese Samples mit 0s, oder halten Sie den vorherigen Wert stabil und verwenden Sie diese Werte für die EMA. Oder irgendeine Rückwärtsinterpolation, sobald du ein neues Sample hast, fülle die fehlenden Werte aus und berechne die EMA neu. Was ich versuche zu bekommen, hast du einen Eingang xn, der Löcher hat. Es gibt keine Möglichkeit, um die Tatsache, dass Sie fehlende Daten umzugehen. So können Sie eine Null-Reihenfolge halten, oder setzen Sie sie auf Null, oder irgendeine Art von Interpolation zwischen xn und xnM. Wobei M die Anzahl der fehlenden Proben und n der Anfang der Lücke ist. Möglicherweise sogar mit Werten vor n. Antwortete am 21. Juni 09 um 13:35 Von einer Stunde oder so mucking ein bisschen mit der Mathematik für diese, ich denke, dass einfach variieren die Alpha wird mir tatsächlich die richtige Interpolation zwischen den beiden Punkten, die Sie reden, aber in einem Viel einfacher. Weiterhin denke ich, dass das Variieren des Alphas auch mit Proben zwischen den Standard-Sampling-Intervallen umgehen wird. Mit anderen Worten, ich suche nach dem, was du beschrieben hast, aber versuch, Mathe zu benutzen, um herauszufinden, wie einfach es ist. Ndash Curt Sampson Jun 21 09 bei 14:07 Ich glaube, es gibt ein solches Tier als fehlerhafte Interpolation. Du weißt einfach, was in der Zeit passiert ist, in der du nicht probierst. Gute und schlechte Interpolation impliziert etwas Wissen darüber, was du vermisst hast, da musst du dagegen messen, um zu beurteilen, ob eine Interpolation gut oder schlecht ist. Obwohl das gesagt hat, können Sie Beschränkungen, dh mit maximaler Beschleunigung, Geschwindigkeit, etc. Ich denke, wenn Sie wissen, wie man die fehlenden Daten zu modellieren, dann würden Sie nur Modell die fehlenden Daten, dann wenden Sie die EMA-Algorithmus ohne Veränderung, eher Als das Alpha ändern. Nur mein 2c :) ndash freespace Das ist genau das, was ich in meiner Bearbeitung auf die Frage vor 15 Minuten: quotYou einfach don39t wissen, was passiert in der Zeit, die Sie nicht probieren sind, aber das ist wahr Auch wenn Sie bei jedem bestimmten Intervall probieren. Also meine Nyquist-Kontemplation: so lange, wie Sie wissen, die Wellenform doesn39t ändern Richtungen mehr als alle paar Proben, die tatsächliche Stichprobenintervall sollte nicht wichtig sein und sollte in der Lage sein zu variieren. Die EMA-Gleichung scheint mir genau zu berechnen, als ob sich die Wellenform linear vom letzten Sample-Wert zum aktuellen veränderte. Ndash Curt Sampson Jun 21 09 um 14:26 Ich glaube, das ist ganz richtig. Nyquist39s Theorem erfordert mindestens 2 Samples pro Periode, um das Signal eindeutig identifizieren zu können. Wenn du das machst, bekommst du Aliasing. Es wäre das gleiche wie das Sampling als fs1 für eine Zeit, dann fs2, dann zurück zu fs1, und du bekommst Aliasing in den Daten, wenn du mit fs2 probierst, wenn fs2 unter dem Nyquist-Limit liegt. Ich muss auch gestehen, dass ich nicht verstehe, was du mit Quellformänderungen von der letzten Probe bis zum aktuellen Onequot sagt. 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 zu einem gewissen Grad ausgearbeitet, aber habe keine mathematische Arbeit, um diesen Vorschlag noch zurück zu haben. Update-Zusammenfassung Zusammenfassung: Möchte den Glättungsfaktor (alpha) unabhängig vom Kompensationsfaktor beibehalten (was ich hier als Beta bezeichne). Jasons ausgezeichnete Antwort schon akzeptiert hier funktioniert toll für mich. Wenn Sie auch die Zeit messen können, seit die letzte Probe entnommen wurde (in abgerundeten Vielfachen Ihrer konstanten Abtastzeit - also 7,8 ms, da die letzte Probe 8 Einheiten wäre), die verwendet werden könnte, um die Glättung mehrmals anzuwenden. Tragen Sie die Formel 8 mal in diesem Fall. Sie haben effektiv eine Glättung voreingenommen mehr auf den aktuellen Wert. Um eine bessere Glättung zu bekommen, müssen wir das Alpha optimieren, während wir die Formel 8 mal im vorherigen Fall anwenden. Was wird diese Glättungs-Annäherung verpassen Es hat bereits 7 Samples 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 Näherungsfaktor beta definieren, der zusammen mit alpha angewendet wird (Als alphabeta statt nur alpha) werden wir davon ausgehen, dass sich die 7 verpassten Samples zwischen den bisherigen und aktuellen Samplewerten reibungslos veränderten. Antwortete am 21. Juni 09 um 13:35 Ich habe darüber nachgedacht, aber ein bisschen mucking mit der Mathematik hat mich an den Punkt, wo ich glaube, dass, anstatt die Formel acht Mal mit dem Stichprobenwert, kann ich eine Berechnung zu tun Von einem neuen Alpha, das es mir erlaubt, die Formel einmal anzuwenden und mir das gleiche Ergebnis zu geben. Weiterhin würde dies automatisch mit der Ausgabe von Proben umgeht, die von exakten Stichproben ausgeglichen wurden. Ndash Curt Sampson Jun 21 09 um 13:47 Die Single-Anwendung ist in Ordnung. Was ich mir noch nicht sicher bin, ist, wie gut die Annäherung der 7 fehlenden Werte ist. Wenn die kontinuierliche Bewegung den Wert Jitter viel über die 8 Millisekunden macht, können die Approximationen ganz aus der Realität liegen. Aber dann, wenn du bei 1ms probierst (höchste Auflösung ohne die verspäteten Samples) hast du schon den Jitter innerhalb von 1ms gedacht, ist nicht relevant. Ist diese Argumentation für Sie (ich versuche mich immer noch zu überzeugen). Ndash nik Jun 21 09 at 14:08 Richtig. Das ist der Faktor Beta aus meiner Beschreibung. Ein Beta-Faktor würde auf der Grundlage des Differenzintervalls und der aktuellen und früheren Samples berechnet. Das neue Alpha wird (alphabeta) sein, aber es wird nur für diese Probe verwendet. Während du scheinst, das Alpha in der Formel zu haben, neige ich zu konstantem Alpha (Glättungsfaktor) und einem unabhängig berechneten Beta (ein Stimmfaktor), der die gerade verpassten Proben kompensiert. Ndash nik Jun 21 09 bei 15: 23Wilder Moving Average Eine Reihe von populären Indikatoren, darunter Relative Strength Index (RSI), Average True Range (ATR) und Directional Movement wurden von J. Welles Wilder entwickelt und in seinem 1978 erschienenen Buch: New Concepts eingeführt In technischen Handelssystemen. Benutzer sollten darauf achten, dass Wilder nicht die standardmäßige exponentielle gleitende Durchschnittsformel verwendet. Dies kann bei der Auswahl geeigneter Zeiträume für seine Indikatoren erheblich beeinträchtigt werden. Die standardmäßige exponentielle gleitende Durchschnittsformel wandelt die Zeitperiode in einen Bruchteil mit der Formel EMA 2 (n 1) um, wobei n die Anzahl der Tage ist. Zum Beispiel ist die EMA für 14 Tage 2 (14 Tage 1) 13.3. Wilder verwendet jedoch eine EMA von 114, was 7,1 entspricht. Dies entspricht einem 27-Tage-exponentiellen gleitenden Durchschnitt unter Verwendung der Standardformel. Betroffene Indikatoren sind: Wir empfehlen, dass Benutzer bei der Verwendung eines der oben genannten Indikatoren kürzere Zeiträume verwenden. Zum Beispiel, wenn Sie einen 30-Tage-Zyklus verfolgen, würden Sie normalerweise eine 15-Tage-Indikator-Zeitspanne auswählen. Mit dem RSI können Sie die Zeitspanne wie folgt einstellen: RSI-Zeitspanne (n 1) 2 (15 1) 2 8 TageVerfahren von Durchschnittsdifferentialgleichungen über Faltung Wir führen ein Mittelungsrahmen ein, wobei die Lösung einer zeitvariablen Gleichung mit a Die kleine Amplitude wird durch die Lösung eines langsam variierenden Hilfssystems angenähert, das durch Falten der ursprünglichen Gleichung mit einer Kernfunktion erzeugt wird. Die Wirkung der Faltung ist die Glättung der Gleichung, so daß sie für numerische Berechnungen besser geeignet ist. Wir stellen enge Ergebnisse für den Näherungsfehler für allgemeine Klassen von Vektorfeldern und Kerneln dar. Möchten Sie den Rest dieses Artikels lesen?
Comments
Post a Comment