Friday 15 September 2017

Gleitender Mittelwert Algorithmus Filter


Im coding etwas in dem Moment, wo Im eine Reihe von Werten im Laufe der Zeit aus einem Hardware-Kompass. Dieser Kompass ist sehr genau und Updates sehr oft, mit dem Ergebnis, dass wenn es leicht wackelt, ich am Ende mit dem ungeraden Wert, der wild unvereinbar mit seinen Nachbarn ist. Ich möchte diese Werte glätten. Nachdem ich einiges gelesen hatte, scheint es, dass was ich will, ein Hochpaßfilter, ein Tiefpaßfilter oder ein gleitender Durchschnitt ist. Gleitender Durchschnitt kann ich mit erhalten, halten Sie einfach eine Geschichte der letzten 5 Werte oder was auch immer, und verwenden Sie den Durchschnitt dieser Werte stromabwärts in meinem Code, wo ich war einmal nur mit dem jüngsten Wert. Das sollte, glaube ich, die Wackeln schön abschneiden, aber es schlägt mir, dass seine wahrscheinlich ziemlich ineffizient, und dies ist wahrscheinlich eines dieser bekannten Probleme zu Proper Programmers, denen theres eine wirklich ordentliche Clever Math-Lösung. Ich bin jedoch einer jener schrecklichen selbstprogrammierten Programmierer ohne einen Fetzen der formalen Bildung in irgendetwas sogar vage mit CompSci oder Mathe verwandt. Lesen um ein Bit deutet darauf hin, dass dies ein Hoch-oder Tiefpassfilter sein kann, aber ich kann nicht finden, was in Begriffen verständlich für einen Hack wie ich, was die Wirkung dieser Algorithmen wäre auf einer Reihe von Werten, geschweige denn wie die Mathematik Arbeitet. Die Antwort hier. Zum Beispiel, technisch beantwortet meine Frage, aber nur verständlich für diejenigen, die wahrscheinlich schon wissen, wie das Problem zu lösen. Es wäre ein sehr schöner und kluger Mensch, der die Art des Problems erklären könnte, und das, wie die Lösungen funktionieren, in Begriffen, die einem Kunstabsolventen verständlich sind. Wenn Ihr gleitender Durchschnitt muss lang sein, um die gewünschte Glättung zu erreichen, und Sie brauchen nicht wirklich eine bestimmte Form des Kernels, dann sind Sie besser dran, wenn Sie einen exponentiell verfallenden gleitenden Durchschnitt verwenden: wo Sie Wählen Sie winzig, um eine entsprechende Konstante zu sein (zB wenn Sie winzige 1- 1N wählen, wird es die gleiche Menge an Mittelung wie ein Fenster der Größe N, aber verteilt unterschiedlich über ältere Punkte). Wie auch immer, da der nächste Wert des gleitenden Durchschnitts hängt nur von der vorherigen und Ihre Daten, müssen Sie nicht eine Warteschlange oder etwas zu halten. Und Sie können denken, dies zu tun, so etwas wie: Nun, ich habe einen neuen Punkt, aber ich dont wirklich vertrauen es, so Im werde 80 meiner alten Schätzung der Messung zu halten, und nur vertrauen diesem neuen Datenpunkt 20. Das ist So ziemlich das gleiche wie zu sagen, Nun, ich vertraue nur diesem neuen Punkt 20, und ich benutze 4 andere Punkte, die ich vertrauen die gleiche Menge, außer dass anstatt explizit nehmen die 4 anderen Punkten, youre Annahme, dass die Mittelung haben Sie das letzte Mal War vernünftig, so können Sie Ihre vorherige Arbeit. Beantwortet Sep 21 10 at 14:27 Hey, ich weiß, das ist 5 Jahre zu spät, aber danke für eine großartige Antwort. Ich arbeite an einem Spiel, bei dem der Klang sich nach deiner Geschwindigkeit ändert, aber wegen des laufenden Spiels auf einem Langsamcomputer würde die Geschwindigkeit stark schwanken, was für die Lenkung gut war, aber super ärgerlich in Bezug auf den Klang. Dies war eine wirklich einfache und billige Lösung für etwas, das ich für ein wirklich komplexes Problem halten würde. Ndash Wenn Sie versuchen, den gelegentlichen ungeraden Wert zu entfernen, ist ein Tiefpassfilter die beste der drei Optionen, die Sie identifiziert haben. Tiefpaßfilter erlauben langsame Änderungen, wie die, die durch das Drehen eines Kompasses von Hand verursacht werden, während Abweisen von Hochgeschwindigkeitsänderungen, wie z. B. durch Stöße auf der Straße, verursacht werden. Ein gleitender Durchschnitt wird wahrscheinlich nicht ausreichen, da die Auswirkungen eines einzelnen Blips in Ihren Daten auf mehrere nachfolgende Werte wirken, abhängig von der Größe des gleitenden Durchschnittsfensters. Wenn die ungeraden Werte leicht erkannt werden, können Sie sogar mit einem Glitch-Entfer - nal-Algorithmus besser abschneiden, der sie komplett ignoriert: Hier ist ein Guick-Graphen zu veranschaulichen: Der erste Graphen ist das Eingangssignal mit einem unangenehmen Glitch. Die zweite Grafik zeigt die Wirkung eines 10-stelligen Gleitmittels. Der endgültige Graph ist eine Kombination aus dem 10-Sample-Mittelwert und dem einfachen Glitch-Detektionsalgorithmus, der oben gezeigt ist. Wenn der Glitch detektiert wird, wird anstelle des tatsächlichen Wertes der 10-Sample-Mittelwert verwendet. Beantwortet Sep 21 10 am 13:38 Schön erklärt und Bonuspunkte für die Grafik) ndash Henry Cooke Sep 22 10 at 0:50 Wow. Seldomly sah so eine schöne Antwort ndash Muis Jun 4 13 at 9:14 Der gleitende Durchschnitt ist ein Tiefpassfilter. Ndash nomen Okt 21 13 am 19:36 Versuchen Sie einen runningstreaming Median statt. Ndash kert Apr 25 14 am 22:09 Gleitender Durchschnitt kann ich unten erhalten. Aber es scheint mir, dass seine wahrscheinlich ziemlich ineffizient. Theres wirklich kein Grund ein gleitender Durchschnitt sollte ineffizient sein. Sie halten die Anzahl der Datenpunkte, die Sie in einem Puffer (wie eine zirkuläre Warteschlange) wollen. An jedem neuen Datenpunkt pflücken Sie den ältesten Wert und subtrahieren ihn von einer Summe, und drücken Sie den neuesten und fügen Sie ihn der Summe hinzu. Jeder neue Datenpunkt bringt also nur einen Popp, eine Addition und eine Subtraktion mit sich. Ihr gleitender Durchschnitt ist immer diese Verschiebungssumme geteilt durch die Anzahl der Werte in Ihrem Puffer. Es wird ein wenig trickiger, wenn youre Empfangen von Daten gleichzeitig von mehreren Threads, aber da Ihre Daten von einem Hardware-Gerät kommt, das scheint sehr zweifelhaft für mich. Oh und auch: schreckliche Selbst-gelehrte Programmierer vereinen) Der gleitende Durchschnitt schien mir ineffizient, weil Sie einen Puffer von Werten speichern müssen - besser, nur einige Clever Maths mit Ihrem Eingabewert und aktuellen Arbeitswert zu tun Ich denke, dass ist wie exponentiell gleitenden Durchschnitt Arbeitet. Eine Optimierung, die ich für diese Art von gleitendem Durchschnitt gesehen habe, beinhaltet die Verwendung eines Fixlängen-Warteschlangen-Amps, einen Zeiger auf die Stelle, an der Sie sich in dieser Warteschlange befinden, und einfach den Zeiger um (mit oder wenn). Voila Kein teurer Pushpop. Power für die Amateure, Bruder ndash Henry Cooke Henry: Für einen geraden-gleitenden Durchschnitt brauchst du den Puffer einfach so, dass du weißt, welcher Wert geknallt wird, wenn der nächste Wert gedrückt wird. Das heißt, die quotfixed-Länge Warteschlange amp eine pointerquot Sie beschreiben ist genau das, was ich durch quotcircular queue. quot Bedeutet, warum ich sage, es ist nicht ineffizient. Was meinst du, ich meinte, Und wenn Ihre Antwort ist quotan Array, das seine Werte zurück verschiebt sich auf jedem indexierten removalquot (wie std :: vector in C). Also, I39m so weh I don39t sogar wollen, um mit Ihnen zu sprechen) ndash Dan Tao 22 September at 1:58 Henry: Ich don39t wissen über AS3, aber ein Java-Programmierer bekam Sammlungen wie CircularQueue zu seiner Verfügung (I39m nicht a Java-Entwickler, so I39m sicher, es gibt bessere Beispiele da draußen that39s genau das, was ich aus einer schnellen Google-Suche gefunden), die genau die Funktionalität implementiert, die wir reden. I39m ziemlich zuversichtlich, die Mehrheit der mittleren und niedrigen Sprachen mit Standard-Bibliotheken haben etwas ähnliches (z. B. in. NET there39s QueueltTgt). Jedenfalls war ich selbst Philosophie. alles ist vergeben. Ndash Dan Tao Ein exponentiell abnehmender gleitender Durchschnitt kann von Hand mit nur dem Trend berechnet werden, wenn Sie die richtigen Werte verwenden. Sehen Sie fourmilab. chhackdiete4 für eine Idee, wie dies schnell mit einem Stift und Papier, wenn Sie für exponentiell geglättet gleitenden Durchschnitt mit 10 Glättung suchen. Aber da Sie einen Computer haben, möchten Sie wahrscheinlich binäre Verschiebung im Gegensatz zur Dezimalverschiebung tun) Auf diese Weise brauchen Sie nur eine Variable für Ihren aktuellen Wert und einen für den Durchschnitt. Daraus kann dann der nächste Mittelwert berechnet werden. Beantwortet eine Technik namens Bereichstor, die gut funktioniert mit Low-Vorkommen falschen Proben. Unter der Annahme einer der oben erwähnten Filtertechniken (gleitender Durchschnitt, exponentiell), sobald Sie genügend Vorgeschichte (eine Zeitkonstante) haben, können Sie das neue eingehende Datenprotokoll auf Angemessenheit testen, bevor es zur Berechnung hinzugefügt wird. Ist ein gewisses Wissen über die maximale vernünftige Änderungsrate des Signals erforderlich. Wird die Rohprobe mit dem letzten geglätteten Wert verglichen, und wenn der absolute Wert dieser Differenz größer als der zulässige Bereich ist, wird diese Probe herausgeworfen (oder durch eine Heuristik ersetzt, zB eine Vorhersage basierend auf der Steigungsdifferenz oder dem Trend Vorhersagewert von doppelter exponentieller Glättung) antwortete am 30. April um 6: 56A Näherer Blick auf den fortgeschrittenen CODAS Moving Average Algorithmus Vielseitiger gleitender Durchschnitt im Advanced CODAS-Algorithmus filtert Wellenformrauschen, extrahiert Mittelwerte und eliminiert Baseline Drift. Der gleitende Durchschnitt ist eine einfache mathematische Technik, die primär zur Beseitigung von Aberrationen verwendet wird und den tatsächlichen Trend in einer Sammlung von Datenpunkten offenbart. Sie könnten mit ihm aus der Mittelung lärmender Daten in einem Neuling Physik-Experiment oder aus der Verfolgung der Wert einer Investition vertraut sein. Sie wissen vielleicht nicht, dass der gleitende Durchschnitt auch ein Prototyp des endlichen Impulsantwortfilters ist, der häufigste Filtertyp, der in der computerbasierten Instrumentierung verwendet wird. In Fällen, in denen eine gegebene Wellenform mit Rauschen überlagert ist, wo ein Mittel aus einem periodischen Signal extrahiert werden muss oder wenn eine langsam driftende Grundlinie aus einem Signal höherer Frequenz eliminiert werden muss, kann ein gleitender Durchschnittsfilter angewendet werden, um das gewünschte zu erzielen Ergebnis. Der gleitende Durchschnittsalgorithmus von Advanced CODAS bietet diese Art der Wellenformfilterleistung. Advanced CODAS ist ein Analyse-Softwarepaket, das auf vorhandenen Wellenformdateien arbeitet, die von WinDaq oder WinDaq-Datenerfassungspaketen der zweiten Generation erstellt wurden. Zusätzlich zu dem gleitenden durchschnittlichen Algorithmus enthält Advanced CODAS auch ein Berichtsgenerator-Dienstprogramm und Software-Routinen für Wellenformintegration, Differenzierung, Peak - und Tal-Erfassung, Rektifikation und arithmetische Operationen. Moving Average Filter Theorie DATAQ Instruments Moving Average Algorithmus ermöglicht eine große Flexibilität in Wellenform-Filter-Anwendungen. Es kann als Tiefpaßfilter verwendet werden, um das Rauschen, das bei vielen Arten von Wellenformen anliegt, oder als Hochpaßfilter zu dämpfen, um eine Drift-Grundlinie von einem Signal höherer Frequenz zu eliminieren. Das Verfahren, das von dem Algorithmus verwendet wird, um die Filtermenge zu bestimmen, beinhaltet die Verwendung eines Glättungsfaktors. Dieser Glättungsfaktor, der von Ihnen durch die Software gesteuert wird, kann erhöht oder verringert werden, um die Anzahl der tatsächlichen Wellenformdatenpunkte oder Abtastwerte anzugeben, die der gleitende Durchschnitt überspannt. Jede periodische Wellenform kann als eine lange Zeichenkette oder Sammlung von Datenpunkten gedacht werden. Der Algorithmus führt einen gleitenden Durchschnitt durch, indem er zwei oder mehr dieser Datenpunkte aus der erfassten Wellenform abgibt, addiert, ihre Summe durch die Gesamtanzahl der hinzugefügten Datenpunkte dividiert und den ersten Datenpunkt der Wellenform durch den gerade berechneten Durchschnitt ersetzt Wiederholen der Schritte mit den zweiten, dritten und so weiter Datenpunkten, bis das Ende der Daten erreicht ist. Das Ergebnis ist eine zweite oder erzeugte Wellenform, die aus den gemittelten Daten besteht und die gleiche Anzahl von Punkten wie die ursprüngliche Wellenform aufweist. Abbildung 1 8212 Jede periodische Wellenform kann als eine lange Zeichenkette oder Sammlung von Datenpunkten gedacht werden. In der obigen Darstellung werden konsekutive Wellenformdatenpunkte durch quotyquot dargestellt, um zu veranschaulichen, wie der gleitende Durchschnitt berechnet wird. In diesem Fall wurde ein Glättungsfaktor von drei angewandt, was bedeutet, dass drei aufeinander folgende Datenpunkte aus der ursprünglichen Wellenform hinzugefügt werden, wobei ihre Summe durch drei geteilt wird, und dann wird dieser Quotient als der erste Datenpunkt einer erzeugten Wellenform aufgetragen. Der Vorgang wiederholt sich mit den zweiten, dritten und anderen Datenpunkten der ursprünglichen Wellenform, bis das Ende der Daten erreicht ist. Eine spezielle Quotientierquot-Technik misst die Anfangs - und Enddatenpunkte der ursprünglichen Wellenform, um sicherzustellen, dass die erzeugte Wellenform die gleiche Anzahl von Datenpunkten wie die Vorlage enthält. Fig. 1 zeigt, wie der gleitende Mittelalgorithmus auf Wellenformdatenpunkte (die durch y dargestellt werden) angewendet wird. Die Abbildung zeigt einen Glättungsfaktor von 3, was bedeutet, dass der Durchschnittswert (dargestellt durch a) über 3 aufeinanderfolgende Wellenformdatenwerte berechnet wird. Beachten Sie die Überlappung, die in den gleitenden Durchschnittsberechnungen vorhanden ist. Es ist diese überlappende Technik, zusammen mit einer speziellen Anfangs - und Endpunktbehandlung, die die gleiche Anzahl von Datenpunkten in der gemittelten Wellenform erzeugt, wie sie im Original existiert. Die Art und Weise, wie der Algorithmus einen gleitenden Durchschnitt berechnet, verdient einen genaueren Blick und kann an einem Beispiel veranschaulicht werden. Sagen wir haben auf einer Diät für zwei Wochen und wir wollen unser durchschnittliches Gewicht in den letzten 7 Tagen zu berechnen. Wir würden unser Gewicht an Tag 7 mit unserem Gewicht an den Tagen 8, 9, 10, 11, 12 und 13 summieren und dann mit 17 multiplizieren. Um das Verfahren zu formalisieren, kann dies folgendermaßen ausgedrückt werden: a (7) 7) y (8) y (9) y (13) Diese Gleichung kann weiter verallgemeinert werden. Der gleitende Mittelwert einer Wellenform kann folgendermaßen berechnet werden: wobei: ein gemittelter Wert n Datenpunktposition s Glättungsfaktor y aktueller Datenpunktwert Bild 2 8212 Die Ausgangswellenform der Kraftmesszelle, die im oberen Kanal als Original und ungefiltert dargestellt ist, und als ein 11-Punkt Gemittelte Wellenform im unteren Kanal. Das Rauschen, das auf der ursprünglichen Wellenform auftritt, war auf die intensiven Vibrationen zurückzuführen, die durch die Presse während des Verpackungsvorgangs erzeugt wurden. Der Schlüssel zu dieser Algorithmenflexibilität ist sein breites Spektrum an auswählbaren Glättungsfaktoren (von 2 - 1.000). Der Glättungsfaktor bestimmt, wie viele tatsächliche Datenpunkte oder Proben gemittelt werden sollen. Das Angeben eines positiven Glättungsfaktors simuliert einen Tiefpaßfilter, während ein negativer Glättungsfaktor ein Hochpassfilter simuliert. Angesichts des Absolutwerts des Glättungsfaktors gelten bei höheren Werten grßere Glättungsbeschränkungen für die resultierende Wellenform und umgekehrt niedrigere Werte weniger Glättung. Mit der Anwendung des geeigneten Glättungsfaktors kann der Algorithmus auch verwendet werden, um den Mittelwert einer gegebenen periodischen Wellenform zu extrahieren. Ein höherer positiver Glättungsfaktor wird typischerweise angewendet, um mittlere Wellenformwerte zu erzeugen. Anwenden des Moving Average Algorithmus Ein herausragendes Merkmal des gleitenden Durchschnittsalgorithmus ist, dass es viele Male auf die gleiche Wellenform angewendet werden kann, um das gewünschte Filterergebnis zu erhalten. Waveform-Filterung ist eine sehr subjektive Übung. Was möglicherweise eine richtig gefilterte Wellenform zu einem Benutzer sein kann, kann unannehmbar laut zu einem anderen sein. Nur Sie können beurteilen, ob die Anzahl der gemittelten Punkte zu hoch, zu niedrig oder genau richtig gewählt wurde. Die Flexibilität des Algorithmus ermöglicht es Ihnen, den Glättungsfaktor anzupassen und einen weiteren Durchlauf durch den Algorithmus durchzuführen, wenn mit dem anfänglichen Versuch keine zufriedenstellenden Ergebnisse erzielt werden. Die Anwendung und die Fähigkeiten des gleitenden Durchschnittsalgorithmus können am besten durch die folgenden Beispiele veranschaulicht werden. Abbildung 3 8212 Die EKG-Wellenform, die ursprünglich und ungefiltert im oberen Kanal und als 97-Punkt-gemittelte Wellenform im unteren Kanal angezeigt wurde. Beachten Sie die Abwesenheit von Baseline Drift im unteren Kanal. Beide Wellenformen werden in einem komprimierten Zustand für Präsentationszwecke gezeigt. Eine Rauschunterdrückungsanwendung In Fällen, in denen eine gegebene Wellenform mit Rauschen überladen ist, kann das gleitende Durchschnittsfilter angewendet werden, um das Rauschen zu unterdrücken und ein klareres Bild der Wellenform zu liefern. Zum Beispiel benutzte ein fortgeschrittener CODAS-Kunde eine Presse und eine Wägezelle in einem Verpackungsbetrieb. Ihr Produkt sollte auf ein vorbestimmtes Niveau (überwacht durch die Kraftmesszelle) komprimiert werden, um die Größe der Verpackung zu reduzieren, die erforderlich ist, um das Produkt aufzunehmen. Aus Qualitätskontrollgründen beschlossen sie, den Pressenbetrieb mit Instrumentierung zu überwachen. Ein unerwartetes Problem trat auf, als sie begannen, die Echtzeit-Wägezellenausgabe anzuzeigen. Da die Pressenmaschine während des Betriebs beträchtlich vibrierte, war die Ausgangswellenform der Lastzellen schwierig zu unterscheiden, da sie eine große Menge an Rauschen aufgrund der Schwingung aufwies, wie dies in dem oberen Kanal von Fig. 2 gezeigt ist. Dieses Rauschen wurde eliminiert, indem ein 11-Punkt-gemittelter Kanal erzeugt wurde, wie in dem unteren Kanal von Fig. 2 gezeigt. Das Ergebnis war ein deutlich deutlicheres Bild der Wägezellenausgabe. Eine Anwendung bei der Beseitigung von Baseline Drift In Fällen, in denen eine langsam driftende Grundlinie aus einem Signal mit höherer Frequenz entfernt werden muss, kann das gleitende Durchschnittsfilter angewendet werden, um die Drift-Baseline zu eliminieren. Beispielsweise weist eine EKG-Wellenform typischerweise einen gewissen Grad an Grundlinienwanderung auf, wie in dem oberen Kanal von 3 zu sehen ist. Diese Grundliniendrift kann eliminiert werden, ohne die Eigenschaften der Wellenform zu verändern oder zu stören, wie in dem unteren Kanal von Fig. 3 gezeigt. Dies wird durch Anwenden eines geeigneten negativen Glättungsfaktors während der gleitenden Durchschnittsberechnung erreicht. Der geeignete Glättungsfaktor wird durch Dividieren einer Wellenformperiode (in Sekunden) durch das Abtastintervall der Kanäle bestimmt. Das Abtastintervall der Kanäle ist einfach der Reziprokwert der Abtastrate der Kanäle und wird bequem auf dem gleitenden Durchschnitts-Utility-Menü angezeigt. Die Wellenformperiode kann leicht aus dem Anzeigebildschirm bestimmt werden, indem der Cursor an einem geeigneten Punkt auf der Wellenform positioniert, eine Zeitmarke eingestellt und dann der Cursor einen vollständigen Zyklus von der angezeigten Zeitmarke weg bewegt wird. Die Zeitdifferenz zwischen Cursor und Zeitmarke ist eine Wellenformperiode und wird am unteren Rand des Bildschirms in Sekunden angezeigt. In unserem EKG-Beispiel besaß die Wellenform ein Kanalabtastintervall von 0,004 Sekunden (erhalten aus dem gleitenden mittleren Utility-Menü) und eine Wellenformperiode wurde gemessen, um 0,388 Sekunden zu überspannen. Das Dividieren der Wellenformperiode durch das Abtastintervall der Kanäle lieferte einen Glättungsfaktor von 97. Da es sich um die Grundliniendrift handelt, die wir an der Eliminierung interessieren, haben wir einen negativen Glättungsfaktor (-97) auf den gleitenden Durchschnittsalgorithmus angewendet. Dies subtrahierte das gleitende Durchschnittsergebnis des ursprünglichen Wellenformsignals, das die Grundliniendrift ohne störende Wellenforminformation eliminierte. Other Waveform Moving Average Issues Unabhängig von der Anwendung ist der universelle Grund für die Anwendung eines gleitenden mittleren Filters auf Quotsmooth outquot die hohen und niedrigen Aberrationen und zeigen einen repräsentativeren Zwischen-Wellenformwert. Dabei sollte die Software bei der Erzeugung einer gleitenden gemittelten Wellenform nicht andere Merkmale der ursprünglichen Wellenform beeinträchtigen. Beispielsweise sollte die Software automatisch die mit der ursprünglichen Datendatei verknüpften Kalibrierungsinformationen einstellen, so daß sich die gleitende gemittelte Wellenform in den geeigneten Entwicklungseinheiten befindet, wenn sie erzeugt wird. Alle Messwerte in den Figuren wurden mit WinDaq Data Acquisition SoftwareDie Wissenschaftler und Ingenieure Leitfaden für digitale Signalverarbeitung von Steven W. Smith, Ph. D. Ein enormer Vorteil des gleitenden Mittelfilters besteht darin, dass er mit einem sehr schnellen Algorithmus implementiert werden kann. Um diesen Algorithmus zu verstehen, stellen Sie sich vor, ein Eingangssignal, x, durch ein siebenpunktiges gleitendes Durchschnittsfilter zu führen, um ein Ausgangssignal y zu bilden. Nun wird untersucht, wie zwei benachbarte Ausgangspunkte y 50 und y 51 berechnet werden: Es sind fast dieselben Berechnungspunkte x 48 bis x 53 für y 50 und für y 51 zu addieren. Wenn y 50 bereits berechnet wurde Ist der effizienteste Weg zum Berechnen von y 51: Nachdem y 51 unter Verwendung von y 50 gefunden worden ist, kann y 52 aus der Probe y 51 und so weiter berechnet werden. Nachdem der erste Punkt in y berechnet ist, können alle anderen Punkte mit nur einer Addition und Subtraktion pro Punkt gefunden werden. Dies kann in der Gleichung ausgedrückt werden: Beachten Sie, dass diese Gleichung zwei Datenquellen verwendet, um jeden Punkt in der Ausgabe zu berechnen: Punkte von der Eingabe und vorher berechnete Punkte von der Ausgabe. Dies wird als rekursive Gleichung bezeichnet, dh das Ergebnis einer Berechnung wird in zukünftigen Berechnungen verwendet. (Der Begriff rekursive hat auch andere Bedeutungen, vor allem in der Informatik). Kapitel 19 behandelt eine Vielzahl von rekursiven Filtern genauer. Beachten Sie, dass sich das gleitende, durchschnittliche rekursive Filter sehr von den typischen rekursiven Filtern unterscheidet. Insbesondere haben die meisten rekursiven Filter eine unendlich lange Impulsantwort (IIR), bestehend aus Sinusoiden und Exponentialen. Die Impulsantwort des gleitenden Mittelwertes ist ein Rechteckimpuls (endliche Impulsantwort oder FIR). Dieser Algorithmus ist aus mehreren Gründen schneller als andere digitale Filter. Erstens gibt es nur zwei Berechnungen pro Punkt, unabhängig von der Länge des Filterkerns. Zweitens sind Addition und Subtraktion die einzigen mathematischen Operationen, während die meisten digitalen Filter eine zeitaufwändige Multiplikation erfordern. Drittens ist das Indexierungsschema sehr einfach. Jeder Index in Gl. 15-3 durch Addieren oder Subtrahieren von ganzzahligen Konstanten gefunden, die berechnet werden können, bevor die Filterung beginnt (d. h. p und q). Weiter kann der gesamte Algorithmus mit Ganzzahldarstellung durchgeführt werden. Abhängig von der verwendeten Hardware können ganze Zahlen mehr als eine Größenordnung schneller als der Gleitpunkt sein. Überraschenderweise arbeitet die Ganzzahldarstellung besser als der Gleitkommawert mit diesem Algorithmus, zusätzlich zu dem, was schneller ist. Der Rundungsfehler der Gleitpunktarithmetik kann zu unerwarteten Ergebnissen führen, wenn Sie nicht vorsichtig sind. Stellen Sie sich zum Beispiel ein 10.000 Probensignal vor, das mit diesem Verfahren gefiltert wird. Der letzte Abtastwert im gefilterten Signal enthält den akkumulierten Fehler von 10.000 Additionen und 10.000 Subtraktionen. Dies erscheint im Ausgangssignal als Driftversatz. Integers dont haben dieses Problem, weil es keine Round-off-Fehler in der Arithmetik. Wenn Sie mit diesem Algorithmus Fließkommazahlen verwenden müssen, zeigt das Programm in Tabelle 15-2, wie ein Doppelpräzisionsakkumulator verwendet wird, um diese Drift zu eliminieren.

No comments:

Post a Comment