Wednesday 8 November 2017

Moving Average Ohne Überlauf


Ich versuche, einen Weg zu finden, um einen sich bewegenden kumulativen Durchschnitt zu berechnen, ohne die Zähl - und Gesamtdaten, die bisher empfangen werden, zu speichern. Ich kam mit zwei Algorithmen, aber beide müssen die Zähler zu speichern: neue durchschnittliche (alte Daten alte Daten) nächste Daten) nächste Zählung neue durchschnittliche alte Durchschnitt (nächste Daten - alter Durchschnitt) nächste Zählung Das Problem mit diesen Methoden ist, dass die Zählung Wird größer und größer, was zu einer Präzision in dem resultierenden Mittel führt. Die erste Methode verwendet die alte Zahl und die nächste Zahl, die offensichtlich 1 auseinander liegen. Dies hat mich denken, dass vielleicht gibt es einen Weg, um die Zählung zu entfernen, aber leider habe ich es noch nicht gefunden. Es hat mich ein bisschen weiter aber, was in der zweiten Methode aber noch zählen vorhanden ist. Ist es möglich, oder bin ich nur auf der Suche nach dem Unmöglichen gefragt Ich habe einige wenige laufende Mittelung techs für Glättung der Änderung in ADC-Daten in AtMega48 für die Kontrolle von Leuchten (PWM) beim Drehen eines Topfes (ADC) versucht. Die Filter (Pseudocodes): Ich bemerkte, dass die Filter sehr schön sind. Aber langsam in Reaktion, die erwartet wird. Ich suche nach einem Techniken wie Exponential gleitenden Durchschnitt. Reagiert werden soll. Gibt es eine andere wie diese Wie es heißt: Wo ist zwischen 0 und 1. Wie Code und Optimierung dieser Code klug (ohne Floats) Oder Wie würde ich die Floats in entsprechende ganze Zahlen für die Herstellung von kleinen, schnellen und reaktionsschnellen Code konvertieren. Und ich hielt 1 Andere dann, dass es nicht wie erwartet funktioniert. Weil Idve alle Variablen zu Float ändern. Bitte konzentrieren Sie sich nicht auf folgende Aussage vorerst, sondern beachten Sie. Halten Floats in meinem Code-Basis ist das Ausfüllen des Programmspeichers von 45 bis 137, im Falle von Sie können mit minimalen Overhead durch Begrenzung auf binäre Brüche implementieren. Ich habe dies mit guten Ergebnissen verwendet. Nehmen Sie das bestehende Ergebnis, Shift it N Orten rechts zu teilen durch 2N Subtrahieren Sie es aus dem bestehenden Ergebnis. Neue Daten hinzufügen Das ist nicht so schnell beim Wechsel mit einer Stufenänderung der Eingangsdaten, wie Sie es wünschen, ist aber in vielen Fällen einfach zu implementieren und effektiv genug als Filter. Sie können ihre Reaktion beschleunigen, indem sie informelle Entscheidungen über sein Verhalten in Fällen, die zu unterschiedlich sind. B. eine Anzahl von sequentiellen Eingängen beibehalten, die mehr als eine Grenze sind, die sich von dem existierenden Ergebnis unterscheidet. Wenn dieser Zählwert einen Schwellenwert überschreitet, dann das N-Teilungsverhältnis um einen Faktor ändern. ZB N ist in der Regel 4- Ergebnisse werden rechts verschoben 4 mal 16 teilen. Wenn Eingang mehr als xxx weg von der Antwort ist, tun Sie nur zwei Verschiebungen nach rechts und multiplizieren Sie neue Probe durch 4, bevor Sie addieren. Ich versuche, einen Weg zu finden, um eine bewegte kumulative Durchschnitt zu berechnen, ohne die Zählung und die insgesamt Daten, die bisher empfangen wird, zu speichern. Ich kam mit zwei Algorithmen, aber beide müssen die Zähler zu speichern: neue durchschnittliche (alte Daten alte Daten) nächste Daten) nächste Zählung neue durchschnittliche alte Durchschnitt (nächste Daten - alter Durchschnitt) nächste Zählung Das Problem mit diesen Methoden ist, dass die Zählung Wird größer und größer, was zu einer Präzision in dem resultierenden Mittel führt. Die erste Methode verwendet die alte Zahl und die nächste Zahl, die offensichtlich 1 auseinander liegen. Dies hat mich denken, dass vielleicht gibt es einen Weg, um die Zählung zu entfernen, aber leider habe ich es noch nicht gefunden. Es hat mich ein bisschen weiter aber, was in der zweiten Methode aber noch zählen vorhanden ist. Ist es möglich, oder bin ich nur auf der Suche nach dem Unmöglichen gefragt Sep 28 12 at 8:46

No comments:

Post a Comment