Sunday, April 16, 2017

Moving Average Algorithmus Filter

Ich habe im Wesentlichen ein Array von Werten wie folgt. Das oben genannte Array ist vereinfacht, ich sammle 1 Wert pro Millisekunde in meinem realen Code und ich muss die Ausgabe auf einem Algorithmus verarbeiten, den ich schrieb, um den nächstgelegenen Peak vor einem Zeitpunkt zu finden Logik scheitert, weil in meinem Beispiel oben, 0 36 ist die reale Spitze, aber mein Algorithmus würde nach hinten schauen und sehen die letzte Zahl 0 25 als die Spitze, da es eine Abnahme auf 0 24 vor it. The Ziel ist, diese Werte zu nehmen Und wendet einen Algorithmus an sie an, die sie ein bisschen glätten wird, damit ich mehr lineare Werte habe, dh ich mag meine Resultate, um curvy zu sein, nicht jaggedy. Ich wurde gesagt, um einen exponentiellen gleitenden durchschnittlichen Filter auf meine Werte anzuwenden Wie kann ich Tu es das ist es wirklich schwer für mich, mathematische Gleichungen zu lesen, ich befasse mich viel besser mit Code. Wie verarbeite ich Werte in meinem Array und wende eine exponentielle gleitende durchschnittliche Berechnung an, um sie auch auszumachen. 8. Februar um 20 27.Zur berechnen Ein exponentieller gleitender Durchschnitt musst du einen Zustand halten und du brauchst einen Tuning-Parameter. Dies verlangt eine kleine Klasse, die davon ausgeht, dass du Java 5 oder höher benutzt. Mit dem Zerfallsparameter, den du tun möchtest, soll das Tuning zwischen 0 und 1 und dann sein Verwenden Sie den Durchschnitt zu filtern. Wenn das Lesen einer Seite auf einige mathematische Wiederholung, alles, was Sie wirklich wissen müssen, wenn Sie es in Code ist, dass Mathematiker gerne Indizes in Arrays und Sequenzen mit Indizes schreiben Sie ve ein paar andere Notationen als auch, was doesn t Hilfe Allerdings ist die EMA ziemlich einfach, da Sie nur einen alten Wert erinnern müssen keine komplizierten Zustand Arrays erforderlich. answered Feb 8 12 bei 20 42. TKKocheran Ziemlich viel Isn t it nice, wenn die Dinge einfach sein können Wenn Sie mit einer neuen Sequenz beginnen, Bekomme einen neuen Mittelwert Hinweis, dass die ersten paar Begriffe in der gemittelten Sequenz um ein bisschen wegen der Grenzeffekte springen, aber du bekommst die mit anderen gleitenden Durchschnitten auch Allerdings ist ein guter Vorteil, dass man die gleitende durchschnittliche Logik in den Mittelwert einpacken kann Und experimentiere ohne zu stören den Rest deines Programms zu viel Donal Fellows Feb 9 12 bei 0 06.Ich habe eine harte Zeit, um Ihre Fragen zu verstehen, aber ich werde versuchen zu beantworten anyway.1 Wenn Ihr Algorithmus gefunden 0 25 statt 0 36, Dann ist es falsch Es ist falsch, weil es eine monotone Zunahme oder Abnahme annimmt, die immer nach oben geht oder immer hinuntergeht, es sei denn, du durchschnittst alle deine Daten, deine Datenpunkte, wie du sie präsentierst --- sind nichtlinear Wenn du es wirklich willst Um den maximalen Wert zwischen zwei Punkten in der Zeit zu finden, dann schneide dein Array von tmin zu tmax und finde das Maximum dieses Subarray.2 Jetzt ist das Konzept der gleitenden Durchschnitte sehr einfach vorstellen, dass ich die folgende Liste 1 4, 1 5 habe , 1 4, 1 5, 1 5 Ich kann es glätten, indem ich den Durchschnitt von zwei Zahlen 1 45, 1 45, 1 45, 1 5 Beachten Sie, dass die erste Zahl der Durchschnitt von 1 5 und 1 4 Sekunden und erste Zahlen ist Die zweite neue Liste ist der Durchschnitt von 1 4 und 1 5 Drittel und zweite alte Liste die dritte neue Liste der Durchschnitt von 1 5 und 1 4 vierte und dritte, und so weiter hätte ich es Zeitraum drei oder vier, oder n Hinweis Wie die Daten viel glatter ist Ein guter Weg, um gleitende Durchschnitte bei der Arbeit zu sehen ist, um zu Google Finance zu gehen, wählen Sie eine Aktie Tesla Motors ziemlich volatile TSLA und klicken Sie auf technische an der Unterseite des Diagramms Wählen Sie Moving Average mit einem bestimmten Zeitraum und Exponentieller gleitender Durchschnitt, um ihre Unterschiede zu vergleichen. Exponentieller gleitender Durchschnitt ist nur eine weitere Ausarbeitung von diesem, aber gewichtet die älteren Daten weniger als die neuen Daten, das ist ein Weg, um die Glättung in Richtung der Rückseite vorzuwerfen Bitte lesen Sie die Wikipedia-Eintrag. So, das ist mehr Ein Kommentar als eine Antwort, aber die kleine Kommentar-Box war nur zu winzigen Viel Glück. Wenn Sie Probleme mit der Mathematik haben, könnten Sie mit einem einfachen gleitenden Durchschnitt statt exponentiell Also die Ausgabe, die Sie erhalten würde die letzten x Begriffe geteilt werden Von x Ungetestetes Pseudocode. Hinweis, dass du die Anfangs - und Endteile der Daten behandeln musst, da du die letzten 5 Begriffe, wenn du auf deinem zweiten Datenpunkt bist, deutlich beurteilen kannst. Auch hier gibt es effizientere Berechnungsmethoden für diesen gleitenden Durchschnitt Summe - älteste neueste, aber dies ist, um das Konzept von dem, was passiert über. answered Feb 8 12 bei 20 41.Is es möglich, einen gleitenden Durchschnitt in C ohne die Notwendigkeit für ein Fenster von samples. I ve das zu finden Ich kann ein bisschen optimieren, indem ich eine Fenstergröße wähle, die eine Kraft von zwei für Bit-Verschiebung anstatt zu teilen, aber nicht brauchen einen Puffer wäre schön Gibt es eine Möglichkeit, ein neues gleitendes durchschnittliches Ergebnis nur als eine Funktion von auszudrücken Das alte Ergebnis und die neue Probe. Define ein Beispiel gleitenden Durchschnitt, über ein Fenster von 4 Samples zu. Add neue Probe eA gleitenden Durchschnitt kann rekursiv implementiert werden, aber für eine genaue Berechnung der gleitenden Durchschnitt müssen Sie sich an die älteste Eingabe erinnern Sample in der Summe dh die a in deinem Beispiel Für eine Länge N gleitenden Durchschnitt berechnen Sie. wobei ist das Ausgangssignal und xn ist das Eingangssignal Eq 1 kann rekursiv geschrieben werden. So müssen Sie sich immer an die Probe x nN in erinnern Um zu berechnen 2.As, die von Conrad Turner hervorgehoben werden, können Sie stattdessen ein unendlich langes exponentielles Fenster verwenden, das Ihnen erlaubt, die Ausgabe nur aus dem vergangenen Ausgang und dem aktuellen Eingang zu berechnen. Aber das ist kein normaler ungewichteter gleitender Durchschnitt, sondern ein Exponentiell gewichteter gleitender Durchschnitt, wo Proben in der Vergangenheit ein kleineres Gewicht bekommen, aber zumindest in der Theorie vergisst man nichts, was die Gewichte nur kleiner und kleiner für Proben weit in der Vergangenheit sind. Ich habe einen gleitenden Durchschnitt ohne Einzelposten-Speicher für ein GPS-Tracking-Programm Ich schrieb. Ich beginne mit 1 Probe und teilen durch 1, um die aktuelle avg. I dann fügen Sie anothe Probe und teilen durch 2 auf die aktuelle avg. Dies geht weiter, bis ich auf die Länge des Mittels zu bekommen. Jede Zeit Danach füge ich die neue Probe hinzu, bekomme den Durchschnitt und beseitige diesen Durchschnitt von der Summe. Ich bin kein Mathematiker, aber das schien wie ein guter Weg, es zu tun. Ich dachte, es würde den Magen eines echten Mathe-Kerls drehen, aber es Stellt sich heraus, dass es eine der akzeptierten Weisen ist, es zu tun Und es funktioniert gut Denken Sie daran, dass je höher Ihre Länge je langsamer es folgt, was Sie folgen wollen Das mag nicht die meiste Zeit sein, aber wenn Sie Satelliten folgen, wenn Sie langsam sind , Der Weg könnte weit von der tatsächlichen Position entfernt sein und es wird schlecht aussehen Sie könnten eine Lücke zwischen dem Sat und den hinteren Punkten haben Ich wählte eine Länge von 15 aktualisiert 6 mal pro Minute, um ausreichende Glättung und nicht zu weit von der tatsächlichen bekommen Setzte Position mit dem geglätteten Pfad dots. answered Nov 16 16 at 23 03.initialize total 0, count 0 jedes Mal, wenn du einen neuen Wert bekommst. Dann eine Eingabe scanf, eine addiere total newValue, eine Inkrementzählung, eine dividierende durchschnittliche total count. This Wäre ein gleitender Durchschnitt über alle Inputs. Um den Durchschnitt über nur die letzten 4 Eingänge zu berechnen, würde es 4 Eingabevariablen erfordern, vielleicht kopiert jeder Eingang in einen älteren Eingabevariablen und berechnet dann den neuen gleitenden Durchschnitt als Summe der 4 Eingangsvariablen, geteilt durch 4 Rechtsverschiebung 2 wäre gut, wenn alle Eingänge positiv waren, um die durchschnittliche Berechnung zu machen. Vielen Dank am 3. Februar 15 um 4 06.Das wird tatsächlich den Gesamtdurchschnitt und NICHT den gleitenden Durchschnitt berechnen. Wenn der Zählwert größer wird, wird der Einfluss eines neuen Eingabemusters Verschwindend kleine Hilmar 3. Februar 15 bei 13 53. Ihre Antwort.2017 Stack Exchange, Inc. Moving Average Filter MA filter. Loading Der gleitende durchschnittliche Filter ist ein einfacher Low Pass FIR Finite Impulse Response Filter, der häufig zum Glätten eines Arrays mit abgetastetem Datensignal verwendet wird Es dauert M Proben von Eingabe zu einem Zeitpunkt und nehmen Sie den Durchschnitt dieser M-Samples und produziert einen einzelnen Ausgangspunkt Es ist eine sehr einfache LPF Low Pass Filter-Struktur, die praktisch für Wissenschaftler und Ingenieure, um unerwünschte geräuschvolle Komponente aus den beabsichtigten Daten zu filtern Wenn die Filterlänge den Parameter M erhöht, erhöht sich die Glätte des Ausgangssignals, während die scharfen Übergänge in den Daten zunehmend stumpf sind. Dies bedeutet, dass dieser Filter eine ausgezeichnete Zeitbereichsantwort hat, aber eine schlechte Frequenzantwort aufweist. Der MA-Filter führt drei wichtige Funktionen aus .1 Es nimmt M Eingangspunkte, berechnet den Mittelwert dieser M-Punkte und erzeugt einen einzelnen Ausgangspunkt 2 Aufgrund der Berechnungsberechnungen führt der Filter eine bestimmte Verzögerung ein 3 Der Filter fungiert als Tiefpassfilter mit schlechtem Frequenzbereich Antwort und eine gute Zeit Domain Antwort. Matlab Code. Following Matlab Code simuliert die Zeitbereich Antwort eines M-Punkt Moving Average-Filter und zeichnet auch die Frequenzantwort für verschiedene Filter Längen. Time Domain Response. Input zu MA Filter.3-Punkt MA Filterausgang. Input zu Moving Average Filter. Response von 3 Punkt Moving Average Filter.51-Punkt MA Filter Ausgang.101-Punkt MA Filter Ausgang. Response von 51-Punkt Moving Average Filter. Response von 101-Punkt Moving Average Filter. 501-Punkt-MA-Filterausgang. Response von 501 Punkt Bewegen des durchschnittlichen Filters. Im ersten Plot haben wir den Eingang, der in den gleitenden Mittelwertfilter geht Der Eingang ist verrauscht und unser Ziel ist es, das Rauschen zu reduzieren Die nächste Figur ist die Ausgabe Antwort eines 3-Punkt-Moving Average Filters Aus der Figur kann abgeleitet werden, dass der 3-Punkt Moving Average Filter nicht viel bei der Ausfilterung des Rauschens getan hat. Wir erhöhen die Filterhähne auf 51 Punkte und wir sehen, dass das Rauschen in Die Ausgabe hat sich viel reduziert, was in der nächsten Abbildung dargestellt ist. Frequenzreaktion von Moving Average Filtern verschiedener Längen. Wir erhöhen die Hähne weiter auf 101 und 501 und wir können beobachten, dass auch - obwohl das Rauschen fast Null ist, die Übergänge sind Abgestumpft drastisch beobachten die Steigung auf beiden Seiten des Signals und vergleichen sie mit dem idealen Brick Wandübergang in unserem input. Frequency Response. From der Frequenzgang kann man behaupten, dass der Roll-off ist sehr langsam und die Stop-Band Dämpfung Ist nicht gut Angesichts dieser Stopband Dämpfung, klar, die gleitenden durchschnittlichen Filter kann nicht trennen ein Band von Frequenzen von anderen Wie wir wissen, dass eine gute Leistung im Zeitbereich führt zu schlechter Leistung im Frequenzbereich und umgekehrt Kurz gesagt, die Gleitender Durchschnitt ist ein außergewöhnlich guter Glättungsfilter die Aktion im Zeitbereich, aber ein außergewöhnlich schlechter Tiefpassfilter die Aktion im Frequenzbereich. External Links. Recommended Books. Primary Sidebar.


No comments:

Post a Comment