Labview Exponentiell Gleitender Durchschnitt
Berechnen von Moving Average Dieses VI berechnet und zeigt den gleitenden Durchschnitt mit einer vorgewählten Nummer an. Zuerst initialisiert das VI zwei Schieberegister. Das obere Schieberegister wird mit einem Element initialisiert und fügt dann den vorherigen Wert kontinuierlich mit dem neuen Wert hinzu. Dieses Schieberegister hält die Summe der letzten x Messungen. Nach dem Teilen der Ergebnisse der Additionsfunktion mit dem vorgewählten Wert berechnet das VI den gleitenden Mittelwert. Das untere Schieberegister enthält ein Array mit der Dimension Average. Dieses Schieberegister hält alle Werte der Messung. Die Ersatzfunktion ersetzt nach jeder Schleife den neuen Wert. Dieses VI ist sehr effizient und schnell, weil es die ersetzen Element-Funktion innerhalb der while-Schleife verwendet, und es initialisiert das Array, bevor es in die Schleife eintritt. Dieses VI wurde in LabVIEW 6.1 erstellt. Bookmark amp ShareMoving durchschnittliche und exponentielle Glättungsmodelle Als erster Schritt in die Bewegung über mittlere Modelle, zufällige Walk-Modelle und lineare Trendmodelle, Nicht-Sektionsmuster und Trends können mit einem Moving-Average - oder Glättungsmodell extrapoliert werden. Die Grundannahme hinter Mittelwertbildung und Glättung von Modellen ist, dass die Zeitreihe lokal stationär mit einem langsam variierenden Mittel ist. Daher nehmen wir einen bewegten (lokalen) Durchschnitt, um den aktuellen Wert des Mittelwerts abzuschätzen und dann das als die Prognose für die nahe Zukunft zu verwenden. Dies kann als Kompromiss zwischen dem mittleren Modell und dem random-walk-without-drift-Modell betrachtet werden. Die gleiche Strategie kann verwendet werden, um einen lokalen Trend abzuschätzen und zu extrapolieren. Ein gleitender Durchschnitt wird oft als quotsmoothedquot Version der ursprünglichen Serie, weil kurzfristige Mittelung hat die Wirkung der Glättung der Beulen in der ursprünglichen Serie. Durch die Anpassung des Grades der Glättung (die Breite des gleitenden Durchschnitts), können wir hoffen, eine Art von optimalem Gleichgewicht zwischen der Leistung der mittleren und zufälligen Wandermodelle zu schlagen. Die einfachste Art von Mittelungsmodell ist die. Einfache (gleichgewichtete) Moving Average: Die Prognose für den Wert von Y zum Zeitpunkt t1, der zum Zeitpunkt t gemacht wird, entspricht dem einfachen Durchschnitt der letzten m Beobachtungen: (Hier und anderswo verwende ich das Symbol 8220Y-hat8221 zu stehen Für eine Prognose der Zeitreihe Y, die zum frühestmöglichen früheren Datum durch ein gegebenes Modell gemacht wurde.) Dieser Durchschnitt ist in der Periode t (m1) 2 zentriert, was impliziert, dass die Schätzung des lokalen Mittels dazu neigen wird, hinter dem wahren zu liegen Wert des lokalen Mittels um etwa (m1) 2 Perioden. So sagen wir, dass das Durchschnittsalter der Daten im einfachen gleitenden Durchschnitt (m1) 2 relativ zu dem Zeitraum ist, für den die Prognose berechnet wird: Dies ist die Zeitspanne, mit der die Prognosen dazu neigen, hinter den Wendepunkten in den Daten zu liegen . Zum Beispiel, wenn Sie durchschnittlich die letzten 5 Werte sind, werden die Prognosen etwa 3 Perioden spät in Reaktion auf Wendepunkte. Beachten Sie, dass, wenn m1, das einfache gleitende Durchschnitt (SMA) - Modell entspricht dem zufälligen Walk-Modell (ohne Wachstum). Wenn m sehr groß ist (vergleichbar mit der Länge der Schätzperiode), entspricht das SMA-Modell dem mittleren Modell. Wie bei jedem Parameter eines Prognosemodells ist es üblich, den Wert von k anzupassen, um die besten Quoten für die Daten zu erhalten, d. h. die kleinsten Prognosefehler im Durchschnitt. Hier ist ein Beispiel für eine Reihe, die zufällige Schwankungen um ein langsam variierendes Mittel zeigt. Zuerst können wir versuchen, es mit einem zufälligen Spaziergang Modell, das entspricht einem einfachen gleitenden Durchschnitt von 1 Begriff: Das zufällige Spaziergang Modell reagiert sehr schnell auf Änderungen in der Serie, aber in diesem Fall nimmt es viel von der Quotierung in der Daten (die zufälligen Schwankungen) sowie das quotsignalquot (das lokale Mittel). Wenn wir stattdessen einen einfachen gleitenden Durchschnitt von 5 Begriffen ausprobieren, erhalten wir einen glatteren Prognosen: Der 5-fach einfache gleitende Durchschnitt liefert in diesem Fall deutlich kleinere Fehler als das zufällige Spaziergangmodell. Das Durchschnittsalter der Daten in dieser Prognose beträgt 3 ((51) 2), so dass es dazu neigt, hinter den Wendepunkten um etwa drei Perioden zurückzukehren. (Zum Beispiel scheint ein Abschwung in der Periode 21 aufgetreten zu sein, aber die Prognosen drehen sich nicht um einige Perioden später.) Beachten Sie, dass die Langzeitprognosen des SMA-Modells eine horizontale Gerade sind, genau wie im zufälligen Spaziergang Modell. So geht das SMA-Modell davon aus, dass es keinen Trend in den Daten gibt. Während die Prognosen aus dem zufälligen Wandermodell einfach dem letzten beobachteten Wert entsprechen, sind die Prognosen des SMA-Modells gleich einem gewichteten Durchschnitt der letzten Werte. Die von Statgraphics für die Langzeitprognosen des einfachen gleitenden Durchschnittes berechneten Vertrauensgrenzen werden nicht weiter erhöht, wenn der Prognosehorizont zunimmt. Das ist offensichtlich nicht richtig Leider gibt es keine zugrundeliegende statistische Theorie, die uns sagt, wie sich die Konfidenzintervalle für dieses Modell erweitern sollten. Allerdings ist es nicht zu schwer, empirische Schätzungen der Vertrauensgrenzen für die längerfristigen Prognosen zu berechnen. Zum Beispiel könnten Sie eine Kalkulationstabelle einrichten, in der das SMA-Modell zur Vorhersage von 2 Schritten voraus, 3 Schritten voraus, etc. im historischen Datenmuster verwendet werden würde. Sie können dann die Stichproben-Standardabweichungen der Fehler bei jedem Prognosehorizont berechnen und dann Konfidenzintervalle für längerfristige Prognosen durch Addition und Subtraktion von Vielfachen der entsprechenden Standardabweichung aufbauen. Wenn wir einen 9-fach einfachen gleitenden Durchschnitt versuchen, bekommen wir noch glattere Prognosen und mehr von einem nacheilenden Effekt: Das Durchschnittsalter beträgt nun 5 Perioden ((91) 2). Wenn wir einen 19-fachen gleitenden Durchschnitt nehmen, steigt das Durchschnittsalter auf 10: Beachten Sie, dass die Prognosen in der Tat hinter den Wendepunkten um etwa 10 Perioden zurückbleiben. Welche Menge an Glättung ist am besten für diese Serie Hier ist eine Tabelle, die ihre Fehlerstatistik vergleicht, auch einen 3-Term-Durchschnitt: Modell C, der 5-fache gleitende Durchschnitt, ergibt den niedrigsten Wert von RMSE um einen kleinen Marge über die 3 - term und 9-term Mittelwerte, und ihre anderen Statistiken sind fast identisch. So können wir bei Modellen mit sehr ähnlichen Fehlerstatistiken wählen, ob wir ein wenig mehr Reaktionsfähigkeit oder ein wenig mehr Glätte in den Prognosen bevorzugen würden. (Zurück zum Anfang der Seite) Browns Einfache Exponential-Glättung (exponentiell gewichteter gleitender Durchschnitt) Das oben beschriebene einfache gleitende Durchschnittsmodell hat die unerwünschte Eigenschaft, dass es die letzten k-Beobachtungen gleichermaßen behandelt und alle vorherigen Beobachtungen völlig ignoriert. Intuitiv sollten vergangene Daten in einer allmählicheren Weise abgezinst werden - zum Beispiel sollte die jüngste Beobachtung ein wenig mehr Gewicht als die 2. jüngste, und die 2. jüngsten sollte ein wenig mehr Gewicht als die 3. jüngsten bekommen, und bald. Das einfache exponentielle Glättungsmodell (SES) erreicht dies. Sei 945 eine quotsmoothing constantquot (eine Zahl zwischen 0 und 1). Eine Möglichkeit, das Modell zu schreiben, besteht darin, eine Reihe L zu definieren, die den gegenwärtigen Pegel (d. h. den lokalen Mittelwert) der Reihe repräsentiert, wie er von den Daten bis zur Gegenwart geschätzt wird. Der Wert von L zum Zeitpunkt t wird rekursiv aus seinem eigenen vorherigen Wert wie folgt berechnet: Somit ist der aktuelle geglättete Wert eine Interpolation zwischen dem vorherigen geglätteten Wert und der aktuellen Beobachtung, wobei 945 die Nähe des interpolierten Wertes auf den letzten Wert steuert Überwachung. Die Prognose für die nächste Periode ist einfach der aktuell geglättete Wert: Gleichermaßen können wir die nächste Prognose direkt in Bezug auf vorherige Prognosen und frühere Beobachtungen in einer der folgenden gleichwertigen Versionen ausdrücken. In der ersten Version ist die Prognose eine Interpolation zwischen vorheriger Prognose und vorheriger Beobachtung: In der zweiten Version wird die nächste Prognose erhalten, indem man die vorherige Prognose in Richtung des vorherigen Fehlers um einen Bruchteil 945 anpasst Zeit t. In der dritten Version ist die Prognose ein exponentiell gewichteter (dh diskontierter) gleitender Durchschnitt mit Rabattfaktor 1-945: Die Interpolationsversion der Prognoseformel ist am einfachsten zu bedienen, wenn man das Modell auf einer Tabellenkalkulation implementiert: Es passt in eine Einzelzelle und enthält Zellreferenzen, die auf die vorherige Prognose, die vorherige Beobachtung und die Zelle hinweisen, in der der Wert von 945 gespeichert ist. Beachten Sie, dass bei 945 1 das SES-Modell einem zufälligen Walk-Modell entspricht (ohne Wachstum). Wenn 945 0 ist, entspricht das SES-Modell dem mittleren Modell, vorausgesetzt, dass der erste geglättete Wert gleich dem Mittelwert ist. (Zurück zum Anfang der Seite) Das Durchschnittsalter der Daten in der einfach-exponentiellen Glättungsprognose beträgt 1 945 gegenüber dem Zeitraum, für den die Prognose berechnet wird. (Das soll nicht offensichtlich sein, aber es kann leicht durch die Auswertung einer unendlichen Reihe gezeigt werden.) Die einfache gleitende Durchschnittsprognose neigt daher dazu, hinter den Wendepunkten um etwa 1 945 Perioden zurückzukehren. Zum Beispiel, wenn 945 0,5 die Verzögerung 2 Perioden beträgt, wenn 945 0,2 die Verzögerung 5 Perioden beträgt, wenn 945 0,1 die Verzögerung 10 Perioden und so weiter ist. Für ein gegebenes Durchschnittsalter (d. H. Verzögerung) ist die Prognose der einfachen exponentiellen Glättung (SES) der einfachen gleitenden Durchschnitts - (SMA) - Prognose etwas überlegen, da sie die jüngste Beobachtung - Es ist etwas mehr auffallend auf Veränderungen, die in der jüngsten Vergangenheit auftreten. Zum Beispiel hat ein SMA-Modell mit 9 Begriffen und einem SES-Modell mit 945 0,2 beide ein Durchschnittsalter von 5 für die Daten in ihren Prognosen, aber das SES-Modell setzt mehr Gewicht auf die letzten 3 Werte als das SMA-Modell und am Gleichzeitig ist es genau 8220forget8221 über Werte mehr als 9 Perioden alt, wie in dieser Tabelle gezeigt: Ein weiterer wichtiger Vorteil des SES-Modells gegenüber dem SMA-Modell ist, dass das SES-Modell einen Glättungsparameter verwendet, der stufenlos variabel ist, so dass er leicht optimiert werden kann Indem ein Quotsolverquot-Algorithmus verwendet wird, um den mittleren quadratischen Fehler zu minimieren. Der optimale Wert von 945 im SES-Modell für diese Baureihe ergibt sich auf 0,2961, wie hier gezeigt: Das Durchschnittsalter der Daten in dieser Prognose beträgt 10.2961 3.4 Perioden, was ähnlich ist wie bei einem 6-fach einfach gleitenden Durchschnitt. Die Langzeitprognosen des SES-Modells sind eine horizontale Gerade. Wie im SMA-Modell und dem zufälligen Walk-Modell ohne Wachstum. Allerdings ist zu beachten, dass die von Statgraphics berechneten Konfidenzintervalle nun in einer vernünftig aussehenden Weise abweichen und dass sie wesentlich schmaler sind als die Konfidenzintervalle für das zufällige Spaziergangmodell. Das SES-Modell geht davon aus, dass die Serie etwas vorhersehbar ist als das zufällige Spaziergangmodell. Ein SES-Modell ist eigentlich ein Spezialfall eines ARIMA-Modells. So bietet die statistische Theorie der ARIMA-Modelle eine fundierte Grundlage für die Berechnung von Konfidenzintervallen für das SES-Modell. Insbesondere ist ein SES-Modell ein ARIMA-Modell mit einer nicht-seasonalen Differenz, einem MA (1) Term und keinem konstanten Term. Ansonsten bekannt als ein quotARIMA (0,1,1) Modell ohne constantquot. Der MA (1) - Koeffizient im ARIMA-Modell entspricht der Menge 1-945 im SES-Modell. Zum Beispiel, wenn man ein ARIMA (0,1,1) Modell ohne Konstante an die hier analysierte Serie passt, ergibt sich der geschätzte MA (1) Koeffizient 0,7029, was fast genau ein minus 0.2961 ist. Es ist möglich, die Annahme eines nicht-null konstanten linearen Trends zu einem SES-Modell hinzuzufügen. Um dies zu tun, geben Sie einfach ein ARIMA-Modell mit einer nicht-seasonalen Differenz und einem MA (1) Begriff mit einer Konstante, d. h. ein ARIMA (0,1,1) Modell mit konstant. Die langfristigen Prognosen werden dann einen Trend haben, der dem durchschnittlichen Trend entspricht, der über den gesamten Schätzungszeitraum beobachtet wird. Sie können dies nicht in Verbindung mit saisonaler Anpassung tun, da die saisonalen Anpassungsoptionen deaktiviert sind, wenn der Modelltyp auf ARIMA eingestellt ist. Allerdings können Sie einen konstanten langfristigen exponentiellen Trend zu einem einfachen exponentiellen Glättungsmodell (mit oder ohne saisonale Anpassung) hinzufügen, indem Sie die Inflationsanpassungsoption im Vorhersageverfahren verwenden. Die jeweilige Quotenquote (prozentuale Wachstumsrate) pro Periode kann als Steigungskoeffizient in einem linearen Trendmodell geschätzt werden, das an die Daten in Verbindung mit einer natürlichen Logarithmus-Transformation angepasst ist, oder sie kann auf anderen, unabhängigen Informationen über langfristige Wachstumsaussichten basieren . (Zurück zum Seitenanfang) Browns Linear (dh Double) Exponentielle Glättung Die SMA Modelle und SES Modelle gehen davon aus, dass es in den Daten keinen Trend gibt (was in der Regel ok oder zumindest nicht so schlecht ist für 1- Schritt-voraus Prognosen, wenn die Daten relativ laut sind), und sie können modifiziert werden, um einen konstanten linearen Trend wie oben gezeigt zu integrieren. Was ist mit kurzfristigen Trends Wenn eine Serie eine unterschiedliche Wachstumsrate oder ein zyklisches Muster zeigt, das sich deutlich gegen den Lärm auszeichnet, und wenn es notwendig ist, mehr als einen Zeitraum voraus zu prognostizieren, dann könnte auch eine Einschätzung eines lokalen Trends erfolgen Ein Problem. Das einfache exponentielle Glättungsmodell kann verallgemeinert werden, um ein lineares exponentielles Glättungsmodell (LES) zu erhalten, das lokale Schätzungen sowohl von Ebene als auch von Trend berechnet. Das einfachste zeitveränderliche Trendmodell ist das lineare, exponentielle Glättungsmodell von Browns, das zwei verschiedene geglättete Serien verwendet, die zu unterschiedlichen Zeitpunkten zentriert sind. Die Prognoseformel basiert auf einer Extrapolation einer Linie durch die beiden Zentren. (Eine ausgefeiltere Version dieses Modells, Holt8217s, wird unten diskutiert.) Die algebraische Form des linearen exponentiellen Glättungsmodells von Brown8217s, wie das des einfachen exponentiellen Glättungsmodells, kann in einer Anzahl von verschiedenen, aber äquivalenten Formen ausgedrückt werden. Die quadratische Form dieses Modells wird gewöhnlich wie folgt ausgedrückt: Sei S die einfach geglättete Reihe, die durch Anwendung einer einfachen exponentiellen Glättung auf die Reihe Y erhalten wird. Das heißt, der Wert von S in der Periode t ist gegeben durch: (Erinnern Sie sich, dass unter einfachem Exponentielle Glättung, das wäre die Prognose für Y in der Periode t1.) Dann sei Squot die doppelt geglättete Reihe, die durch Anwendung einer einfachen exponentiellen Glättung (mit demselben 945) auf die Reihe S erhalten wird: Schließlich ist die Prognose für Y tk. Für irgendwelche kgt1 ist gegeben durch: Dies ergibt e 1 0 (d. h. Cheat ein Bit, und lassen Sie die erste Prognose gleich der tatsächlichen ersten Beobachtung) und e 2 Y 2 8211 Y 1. Nach denen Prognosen mit der obigen Gleichung erzeugt werden. Dies ergibt die gleichen angepassten Werte wie die Formel auf Basis von S und S, wenn diese mit S 1 S 1 Y 1 gestartet wurden. Diese Version des Modells wird auf der nächsten Seite verwendet, die eine Kombination aus exponentieller Glättung mit saisonaler Anpassung darstellt. Holt8217s Lineare Exponential-Glättung Brown8217s LES-Modell berechnet lokale Schätzungen von Level und Trend durch Glättung der aktuellen Daten, aber die Tatsache, dass es dies mit einem einzigen Glättungsparameter macht, legt eine Einschränkung auf die Datenmuster, die es passen kann: das Niveau und den Trend Dürfen nicht zu unabhängigen Preisen variieren. Holt8217s LES-Modell adressiert dieses Problem, indem es zwei Glättungskonstanten einschließt, eine für die Ebene und eine für den Trend. Zu jeder Zeit t, wie in Brown8217s Modell, gibt es eine Schätzung L t der lokalen Ebene und eine Schätzung T t der lokalen Trend. Hier werden sie rekursiv aus dem Wert von Y, der zum Zeitpunkt t beobachtet wurde, und den vorherigen Schätzungen des Niveaus und Tendenzes durch zwei Gleichungen berechnet, die eine exponentielle Glättung für sie separat anwenden. Wenn der geschätzte Pegel und der Trend zum Zeitpunkt t-1 L t82091 und T t-1 sind. Dann ist die Prognose für Y tshy, die zum Zeitpunkt t-1 gemacht worden wäre, gleich L t-1 T t-1. Wenn der Istwert beobachtet wird, wird die aktualisierte Schätzung des Pegels rekursiv durch Interpolation zwischen Y tshy und dessen Prognose L t-1 T t-1 unter Verwendung von Gewichten von 945 und 1 945 berechnet. Die Änderung des geschätzten Pegels, Nämlich L t 8209 L t82091. Kann als eine laute Messung des Trends zum Zeitpunkt t interpretiert werden. Die aktualisierte Schätzung des Trends wird dann rekursiv durch Interpolation zwischen L t 8209 L t82091 und der vorherigen Schätzung des Trends T t-1 berechnet. Mit Gewichten von 946 und 1-946: Die Interpretation der Trend-Glättungs-Konstante 946 ist analog zu der Niveau-Glättungs-Konstante 945. Modelle mit kleinen Werten von 946 gehen davon aus, dass sich der Trend nur sehr langsam über die Zeit ändert, während Modelle mit Größer 946 nehmen an, dass es sich schneller ändert. Ein Modell mit einer großen 946 glaubt, dass die ferne Zukunft sehr unsicher ist, denn Fehler in der Trendschätzung werden bei der Prognose von mehr als einer Periode sehr wichtig. (Zurück zum Seitenanfang) Die Glättungskonstanten 945 und 946 können in der üblichen Weise durch Minimierung des mittleren quadratischen Fehlers der 1-Schritt-voraus-Prognosen geschätzt werden. Wenn dies in Statgraphics geschieht, ergeben sich die Schätzungen auf 945 0.3048 und 946 0,008. Der sehr kleine Wert von 946 bedeutet, dass das Modell eine sehr geringe Veränderung des Trends von einer Periode zur nächsten einnimmt, so dass dieses Modell grundsätzlich versucht, einen langfristigen Trend abzuschätzen. In Analogie zum Begriff des Durchschnittsalters der Daten, die bei der Schätzung der lokalen Ebene der Serie verwendet wird, ist das Durchschnittsalter der Daten, die bei der Schätzung des lokalen Trends verwendet wird, proportional zu 1 946, wenn auch nicht genau gleich . In diesem Fall stellt sich heraus, dass es sich um 10.006 125 handelt. Dies ist eine sehr genaue Zahl, da die Genauigkeit der Schätzung von 946 wirklich 3 Dezimalstellen ist, aber sie ist von der gleichen allgemeinen Größenordnung wie die Stichprobengröße von 100 Dieses Modell ist durchschnittlich über eine ganze Menge Geschichte bei der Schätzung der Trend. Die prognostizierte Handlung unten zeigt, dass das LES-Modell einen geringfügig größeren lokalen Trend am Ende der Serie schätzt als der im SEStrend-Modell geschätzte konstante Trend. Auch der Schätzwert von 945 ist fast identisch mit dem, der durch die Anpassung des SES-Modells mit oder ohne Trend erhalten wird. Das ist also fast das gleiche Modell. Nun, sehen diese aus wie vernünftige Prognosen für ein Modell, das soll ein lokaler Trend schätzen Wenn Sie diese Handlung, es sieht so aus, als ob der lokale Trend hat sich nach unten am Ende der Serie Was ist passiert Die Parameter dieses Modells Wurden durch die Minimierung der quadratischen Fehler von 1-Schritt-voraus Prognosen, nicht längerfristige Prognosen geschätzt, in welchem Fall der Trend doesn8217t machen einen großen Unterschied. Wenn alles, was Sie suchen, sind 1-Schritt-vor-Fehler, sehen Sie nicht das größere Bild der Trends über (sagen) 10 oder 20 Perioden. Um dieses Modell mehr im Einklang mit unserer Augapfel-Extrapolation der Daten zu erhalten, können wir die Trend-Glättung konstant manuell anpassen, so dass es eine kürzere Grundlinie für Trendschätzung verwendet. Zum Beispiel, wenn wir uns dafür entscheiden, 946 0,1 zu setzen, dann ist das Durchschnittsalter der Daten, die bei der Schätzung des lokalen Trends verwendet werden, 10 Perioden, was bedeutet, dass wir den Trend über die letzten 20 Perioden oder so vermitteln. Hier8217s, was die Prognose Handlung aussieht, wenn wir 946 0,1 gesetzt, während halten 945 0,3. Das sieht für diese Serie intuitiv vernünftig aus, obwohl es wahrscheinlich gefährlich ist, diesen Trend in Zukunft mehr als 10 Perioden zu extrapolieren. Was ist mit den Fehlerstatistiken Hier ist ein Modellvergleich für die beiden oben gezeigten Modelle sowie drei SES-Modelle. Der optimale Wert von 945 für das SES-Modell beträgt etwa 0,3, aber es werden ähnliche Ergebnisse (mit etwas mehr oder weniger Ansprechverhalten) mit 0,5 und 0,2 erhalten. (A) Holts linear exp. Glättung mit alpha 0.3048 und beta 0.008 (B) Holts linear exp. Glättung mit alpha 0,3 und beta 0,1 (C) Einfache exponentielle Glättung mit alpha 0,5 (D) Einfache exponentielle Glättung mit alpha 0,3 (E) Einfache exponentielle Glättung mit alpha 0.2 Ihre Stats sind nahezu identisch, so dass wir wirklich die Wahl treffen können Von 1-Schritt-voraus Prognosefehler innerhalb der Datenprobe Wir müssen auf andere Überlegungen zurückgreifen. Wenn wir stark davon überzeugt sind, dass es sinnvoll ist, die aktuelle Trendschätzung auf das, was in den letzten 20 Perioden passiert ist, zu stützen, so können wir einen Fall für das LES-Modell mit 945 0,3 und 946 0,1 machen. Wenn wir agnostisch darüber sein wollen, ob es einen lokalen Trend gibt, dann könnte eines der SES-Modelle leichter zu erklären sein und würde auch mehr Mittelwert der Prognosen für die nächsten 5 oder 10 Perioden geben. (Rückkehr nach oben) Welche Art von Trend-Extrapolation ist am besten: horizontal oder linear Empirische Evidenz deutet darauf hin, dass, wenn die Daten bereits für die Inflation angepasst wurden (falls erforderlich), dann kann es unklug sein, kurzfristig linear zu extrapolieren Trends sehr weit in die Zukunft. Trends, die heute deutlich werden, können in Zukunft aufgrund unterschiedlicher Ursachen wie Produktveralterung, erhöhter Konkurrenz und zyklischer Abschwünge oder Aufschwünge in einer Branche nachlassen. Aus diesem Grund führt eine einfache, exponentielle Glättung oftmals zu einem besseren Out-of-Sample, als es sonst zu erwarten wäre, trotz der quadratischen horizontalen Trend-Extrapolation. Gedämpfte Trendmodifikationen des linearen exponentiellen Glättungsmodells werden auch in der Praxis häufig verwendet, um eine Note des Konservatismus in seine Trendprojektionen einzuführen. Das LES-Modell mit gedämpftem Trend kann als Spezialfall eines ARIMA-Modells, insbesondere eines ARIMA (1,1,2) - Modells, implementiert werden. Es ist möglich, Konfidenzintervalle um Langzeitprognosen zu berechnen, die durch exponentielle Glättungsmodelle erzeugt werden, indem sie sie als Sonderfälle von ARIMA-Modellen betrachten. (Vorsicht: Nicht alle Software berechnet die Konfidenzintervalle für diese Modelle korrekt.) Die Breite der Konfidenzintervalle hängt von (i) dem RMS-Fehler des Modells ab, (ii) der Art der Glättung (einfach oder linear) (iii) der Wert (S) der Glättungskonstante (n) und (iv) die Anzahl der voraussichtlichen Perioden, die Sie prognostizieren. Im Allgemeinen werden die Intervalle schneller ausgebreitet als 945 im SES-Modell größer und sie breiten sich viel schneller aus, wenn lineare statt einfache Glättung verwendet wird. Dieses Thema wird im ARIMA-Modellteil der Notizen weiter erörtert. (Zurück zum Seitenanfang.) Exponentia l gleitende durchschnittliche Schrittantwort fpga Ich habe ein Problem mit meinem Filter, dem exponentiell gewichteten gleitenden Durchschnittsfilter (IIR 1. Ordnung). Aus dem Buch: Verständnis der digitalen Signalverarbeitung (Lyons Richard) Ich habe die folgende Formel Berechnung der 3dB Frequenz (fc) aus alpha. Alpha ist der Parameter, um den Filter zu steuern. Differentialgleichung des Filters: ynxnalpha (1 - alpha) yn-1 Beziehung zwischen fc und alpha: alpha cos (2fcfs) - 1 sqrtcos (2fcfs) - 4cos (2fcfs) 3 Wenn ich nun eine 3dB Frequenz von 0,0794Hz (Zeit Konstante (TC) 2s) alpha 0,00169621 (fs94Hz) Für einen IIR Filter 1. Ordnung ist die Anstiegszeit (ta) der Stepresponse (von 10 bis 90): ta2,2TC, was zu ta 4,4s führt. Aber wenn ich die Sprungantwort simuliere, ist meine Aufstiegszeit etwa 14 mal dieses Wertes bei 14s. Ich kann nicht erklären, warum sich die Sprungantwort meines Filters so stark unterscheidet. Für meine Moving Average Filter ist die berechnete und simulierte Anstiegszeit gleich. Ich habe die vi, die auf dem FPGA durchgeführt wird. Vielleicht kann jemand einen Fehler finden. (Siehe auch Alpha-Filter oder RC-Filter) Ist deine Sampling-Frequenz (fs) richtig Wenn die Loop-Timing nicht übereinstimmt, würde das es erklären. Ihre Datentypen sehen gut aus (um Alpha innerhalb 1 zu bekommen). Aber ich würde vorschlagen, eine geringfügige Änderung in der Umsetzung. Wie es steht, ist es ein bisschen anfällig für das Abrunden, weil (1-alpha) wiederholt mit dem yn-1 multipliziert wird. Eine etwas zuverlässigere Methode ist yn yn-1 (alpha (xn - yn-1)) zu sagen. Der Unterschied ist subtil, aber gibt mir bessere Ergebnisse viele Male. Und es eliminiert ein Multiplikation. Übrigens, neu interpretieren Zahl tut die gleiche Sache wie Ihre konvertieren von FXP zu bool dann zurück. Es ist ein wenig weniger verwirrend. Im ein wenig verwirrt durch die zeitgesteuerte Schleife, die niemals schleift. Gibt es das Timing auf diese Weise (ich habe davon ausgegangen, es würde nicht, also nie verwendet es Ich benutze den Loop Timer stattdessen.) CLD User seit rev 8.6. Nachricht 2 von 13 (1.057 Ansichten) Re: exponentia l gleitende durchschnittliche Schritt Antwort fpga 10-01-2015 02:05 AM - bearbeitet 10-01-2015 02:17 AM Danke für deine Antwort. 1, ich bewege meine Sampling-Frequenz mit dem Loop-Timer. Meine Eingabe sind 425.532 Ticks, was 94 Hz entspricht. Diese Tickrate wird durch Zecken EWMA bestätigt. --gt vielleicht jemand kann den Code testen und mir sagen 2, fand ich deinen Ansatz in den Tricks und Tipps Abschnitt von Lyons Buch. Ich werde es versuchen, aber könntest du das Runden abreiben, ein wenig zu treiben, ich bin ganz neu in diesem Bereich. Gibt es einen weiteren Vorteil von der Beseitigung eines Multiplikators mit Ausnahme von Ressourcen sind die Frequenzantwort, Impulsantwort und Schrittantwort die gleiche 3, Wenn ich nur Bitshift, bin ich freundlich zu dieser Methode verwendet Nicht sicher, ob die reinterprate Funktion weniger Ressourcen verwendet. Aber danke, dass ich es bemerkt habe. 4, Die zeitgesteuerte Schleife iteriert alle 425.532 Zecken einmal. Also mit einer Frequenz von 94Hz wird ein Wert durch den Code berechnet, da der Code innerhalb der zeitgesteuerten Schleife nur eine Iteration benötigt. Oder bin ich missverstanden Ihre Frage Ich bin mir nicht sicher, welche weiteren Informationen Sie benötigen. Ich versuche, die Sprungantwort eines gleitenden Durchschnitts mit einem exponentiellen gleitenden Durchschnitt (EWMA) zu vergleichen. Eigentlich möchte ich nur die Theorie bestätigen. Wie ich bereits erwähnt habe, um eine Zeitkonstante von 2s bei einer Abtastrate von 94Hz zu erhalten, muss alpha 0.00169 sein. Die Anstiegszeit der Sprungantwort von 10 bis 90 des Endwertes unterscheidet sich von der Theorie. Anstieg Zeit sollte 4,4s mit Zeitkonstante 2s, aber ich bekomme fast 14s, wenn ich meinen Code auf der FPGA laufen. Ich bestätigte, dass mit alpha 0,00169, mein Code 1297Samples von 0,1 bis 0,9 (Endwert ist 1, Startwert 0) zu bekommen. Wie Sie in meinem Code sehen können, überprüfe ich die Schleifenzeit mit dem Indikator tickt ewma, um die Abtastrate der SCTL zu bestätigen. Kann jemand anderes die 1297Samples bestätigen, die bei alpha 0,00169 gebraucht werden, weil ich denke, dass ich zu viele Samples benötige, um den Wert 0,9 zu erreichen. Ich habe die vorgeschlagene EWMA-Version bereits von der ersten Antwort implementiert. Das gleiche Problem hier Nachricht 5 von 13 (1,007 Ansichten) Re: exponentia l bewegte durchschnittliche Schrittantwort fpga 10-01-2015 08:13 AM - bearbeitet 10-01-2015 08:15 AM 1, ich verspreche meine Sampling-Frequenz mit dem Loop-Timer. Meine Eingabe sind 425.532 Ticks, was 94 Hz entspricht. Diese Tickrate wird durch Zecken EWMA bestätigt. --gt vielleicht jemand kann den Code testen und mir sagen 2, fand ich deinen Ansatz in den Tricks und Tipps Abschnitt von Lyons Buch. Ich werde es versuchen, aber könntest du das Runden abreiben, ein wenig zu treiben, ich bin ganz neu in diesem Bereich. Gibt es einen weiteren Vorteil von der Beseitigung eines Multiplikators mit Ausnahme von Ressourcen sind die Frequenzantwort, Impulsantwort und Schrittantwort die gleiche 3, Wenn ich nur Bitshift, bin ich freundlich zu dieser Methode verwendet Nicht sicher, ob die reinterprate Funktion weniger Ressourcen verwendet. Aber danke, dass ich es bemerkt habe. 4, Die zeitgesteuerte Schleife iteriert alle 425.532 Zecken einmal. Also mit einer Frequenz von 94Hz wird ein Wert durch den Code berechnet, da der Code innerhalb der zeitgesteuerten Schleife nur eine Iteration benötigt. Oder bin ich missverstanden Ihre Frage Ich habe eine Kalkulationstabelle zu simulieren, und bekommen fast genau die gleiche Antwort (1299 Zyklen von 0,1 bis 0,9 gehen). Spreadsheets machen ein praktisches Werkzeug zum Testen von Berechnungen. 1. Okay. Ich habe niemals die Single-Cycle-Timed-Loop (SCTL) benutzt, wobei das T an den Stop geschrieben wurde. Es würde die mathematischen Funktionen zwingen, ein Zyklus zu sein, aber ich bin nicht sicher, ob das ein Vorteil ist. Ich wollte nur sicherstellen, dass die Zeit bestätigt wurde, und das ist es. 2. Das Round-off Drifting wird wahrscheinlich nicht auftauchen, es sei denn, Ihr Eingang ist klein (weniger als 0,1). Ich sehe jetzt, dass Sie 40 Bits (39 rechts der Dezimalstelle) für das Feedback haben. Das dauert einiges an FPGA, um sich zu vermehren, aber es gibt keine Abrundungsprobleme. Andere Teile hatten nur 18 Bits (17 rechts von der Dezimalzahl), also alpha (0,00169 - .000007) mal eine Eingabe von 0,1 wäre 0,000169 - 0,000007 oder 7 Fehler gewesen). Aber das multipliziert ist auch 40 bit, also solltest du keine Probleme sehen Typischerweise hat der Ausgang yn weniger Bits und wird am letzten Bit abrunden. Aber weil es in einer Loop-Multiplikation mit 1-alpha jedes Mal ist, wird das Round-off manchmal jede Schleife akkumuliert, bis es groß genug ist, um die adds Ergebnisse zu beeinflussen. Es ist schwer zu erklären, aber meine allgemeine Faustregel ist, dass ich einen Fehler gleich dem kleinsten Bit, das durch Alpha geteilt wird, mit der ursprünglichen Methode oder etwa die Hälfte, die uns die Ein-Multiplikations-Methode, Die Antworten werden fast identisch sein, außer für einen kleinen Unterschied. Der größte Vorteil ist das Speichern von FPGA-Speicherplatz (und Kompilierzeit). Und du kannst deine Anzahl von Bits etwas reduzieren, um noch mehr zu sparen. 3. Sie sind grundsätzlich identisch. Und beide Methoden sind frei in FPGA. Die Bits arent geändert, so dass keine Logik benötigt wird, sind sie einfach neu gekennzeichnet. 4. Ich glaube, Sie haben es gut geantwortet. Im Allgemeinen würde ich an dieser Stelle Alpha anpassen, bis meine Ergebnisse übereinstimmen, was ich wollte, und weiter. Ich hasse es nicht zu verstehen, ein Missverhältnis, aber nicht in der Regel Zeit, um in sie zu tauchen. Aber, um der Wissenschaft willen, können wir bedenken, dass Ihre Formel fehlerhaft sein kann. Ich denke, Sie können eine Formel für einen kontinuierlichen exponentiellen Zerfall (e-ttau) verwenden, nicht für einen diskreten exponentiellen Zerfall ((1-alpha) i). Es ist einfacher, dies als eine Schrittfunktion von 1 bis 0 zu betrachten. In diesem Fall ist yn (für ngt0) yn (1-alpha) (n). Wir können n für yn 0,9, als nlog1-alpha (0,9) 62 und n für yn 0,1, als 1361, für eine Differenz von 1299 finden. CLD Benutzer seit rev 8.6. Vielen Dank für Ihre ausführliche Antwort. Was das Problem mit der Aufstiegszeit betrifft, denke ich, dass ich den Fehler gefunden habe. Sie haben vielleicht recht, dass die Formel nicht korrekt ist oder was von mir vermutlich falsch verstanden und in den falschen Kontext gestellt wird. Als ich von der Arbeit nach Hause fuhr, erinnerte ich mich an eine handliche Funktion von labview: Glättungsfilter coefficients. vi Hier musst du nur tauTC und fs setzen und es errechnet Nominator und Nenner für exponentiell gleitenden Durchschnitt und gleitenden Durchschnitt. Da der Nominator alpha ist, könnte ich das Ergebnis mit der Formel vergleichen, die ich benutzt habe, und es war ein ganz anderer Unterschied. Labview verwendet die folgende Formel: alpha1-exp (-1 (fsTC)). Mit dieser Formel ist TC2s gleich alpha0,0053. Und mit diesem Alpha meine Simulation funktioniert Risetime 4,4s Zitieren Sie: Im Allgemeinen, an diesem Punkt würde ich Alpha anpassen, bis meine Ergebnisse übereinstimmen, was ich wollte, und weiter. Ich würde es lieben, dasselbe zu tun, aber da dies meine Masterarbeit ist, muss ich solche Dinge lösen. Jetzt zurück zu den Rundungsproblemen. Ich verstehe, dass kleine Werte ein größeres Problem sind. Da dieser Filter in einem Lock In verwendet wird, werden die Werte WIRKLICH klein sein. Aber ich habe es schon auf unserem Messgerät getestet und es funktioniert, deshalb werde ich auch deine Version testen, aber wenn ich keine Probleme bekomme, schätze ich, dass ich es bei 40bits behalte. Das Simulieren des folgenden Setups verursachte einen Fehler von 2.3. Mit 57 Bits reduziert den Fehler auf unter 1. Ich denke, 40bits sollte genug sein. Und in Bezug auf die Ressourcen habe ich keine Sorgen. Obwohl ich ein Myrio am Ende habe, habe ich noch viele DSP-Slices für die Multiplikation und 10 kostenlose FlipFlops. Also ich vermute, dieses Thema ist gelöst. Vielen Dank für Ihre tolle Hilfe und interessante Gedanken. Cool Ich bin froh, dass es jetzt funktioniert. Ich wuchs in der Ära ohne DSP-Scheiben in FPGAs, und kleinere Zelle zählt, so immer noch dazu neigen, in diesen Bedingungen zu denken. Ich ziehe es immer noch vor, 25 Minuten Programmierung zu verbringen, um meine Kompilierzeiten zu bekommen. Ive hatte Fälle, in denen ich Kompilierzeit von 90 Minuten zu 45 Minuten durch die Optimierung ziemlich viel schneide. Mit einem leistungsstarken Server zum Kompilieren ist das weniger wichtig. One of those optimizations is to reduce bit counts where I can, especially for multiplies. For example, alpha is 160, and for 0.0053, you could also use 12-4 (negative integer count). You may also be able to eliminate a lot of upper bits from your input. 5 minutes to pick the smallest bit-count can easily save 2-10 minutes for every compile. My second optimization is to reduce multiplies, but with a DSP slice, thats not that important. I cant find good documentation about the DSP slices (if you have some, please post links), but as I understand it, if you multiply larger numbers (bit counts), it needs multiple slices, and maybe time to combine the results. And one more trick: pick an alpha with a simple binary value, like 1256 (you picked about 1189), and change fs until you get the smoothing you want. Then use a constant for alpha. Multiply by a constant 1256 is free in the FPGA (it just shifts the bits). For that matter, making alpha constant may optimize the multiplies quite a bit. Depending on the smarts of the optimizer, it may change it to a set of adders instead. Front panel inputs are great for getting things to work, but constants optimize MUCH better. CLD User since rev 8.6. If you average 16 times as many samples (fs 16x what it was), you should include 4 more bits in your feedback. You already have pleanty, so that may not be important unless you go much faster. Otherwise, increasing fs is probably good. If the input has low-frequency noise, over sampling doesnt help eliminate that at all. High-frequency noise, though, does reduce with over-sampling. If, for example, the noise above 10Hz is -5dB (that is 10-.5 times the amplitude of the signal you like), and you sample at 20Ss, you will probably pick up -5dB in your initial readings. If your -3dB (fc) is also 10Hz, then youll end up with around -8dB noise left in your signal. If you instead take 200Ss, average groups of 10, then pass those averages to the filter, you wont help noise at 10Hz (you were measuring 10Hz noise with no sampling effects), but will reduce noise above 100Hz by about a factor of close to (but not really) 10. There are entire semester-long classes that discuss why, how, etc. The short version is this: Each sample is the sum of the signal you want and noise. If you add 10 samples, you get 10x the signal you want, and the sum of 10 noise. The nature of the noise determines what you get when you add the 10 samples of noise. Gaussian noise adds one way (something like: if 83 of samples are below X, the sum has 83 sums below 1.1X, or something like that). Linear noise adds another way. And repeating patterns add another way. So, without knowing exactly what the noise is, no one can answer you with certainty, except that averaging multiple samples probably helps, and almost never hurts. There is also the issue of aliasing. If you have a sine interferance of 60Hz, at -3dB, and you sample at 10.001Ss (always assume the clocks wont match presicely), you will get something like 0.006Hz at -3dB added to your signal, and your filter wont remove it. But bumping your sample rate to 100.001Ss, will put the interference at about 40Hz, so your filter should eliminate it. Averaging 10 samples at a time is a type of filter (box). If you look at it in a frequency domain, you can see that some higher frequencies get shifted to lower frequencies in an odd way, and not all are reduced. If you average 4000 Ss, 100 at a time, youll get an average 40 times per second. With 60Hz interference, you will get about 13 as much noise, shifted to 20Hz, which wont filter as well as 60Hz would have. So, it would be better to use the EWMA filter at the higher sample rate . than to average blocks of inputs, then filter that. And averaging is (probably) better than just using a slower sample rate. If you have an input adapter with built-in electronic filters, thats even better, and there is no need to sample more than 2X the filters frequency. CLD User since rev 8.6.Updated 12th March 2013 What are RC Filtering and Exponential Averaging and how do they differ The answer to the second part of the question is that they are the same process If one comes from an electronics background then RC Filtering (or RC Smoothing) is the usual expression. On the other hand an approach based on time series statistics has the name Exponential Averaging, or to use the full name Exponential Weighted Moving Average. This is also variously known as EWMA or EMA. A key advantage of the method is the simplicity of the formula for computing the next output. It takes a fraction of the previous output and one minus this fraction times the current input. Algebraically at time k the smoothed output y k is given by As shown later this simple formula emphasises recent events, smooths out high frequency variations and reveals long term trends. Note there are two forms of the exponential averaging equation, the one above and a variant Both are correct. See the notes at end of the article for more details. In this discussion we will only use equation (1). The above formula is sometimes written in the more limited fashion. How is this formula derived and what is its interpretation A key point is how do we select . To look into this one simple way is to consider an RC low pass filter. Now an RC low pass filter is simply a series resistor R and a parallel capacitor C as illustrated below. The time series equation for this circuit is The product RC has units of time and is known as the time constant, T. for the circuit. Suppose we represent the above equation in its digital form for a time series which has data taken every h seconds. We have This is exactly the same form as the previous equation. Comparing the two relationships for a we have which reduces to the very simple relationship Hence the choice of N is guided by what time constant we chose. Now equation (1) may be recognised as a low pass filter and the time constant typifies the behaviour of the filter. To see the significance of the Time Constant we need to look at the frequency characteristic of this low pass RC filter. In its general form this is Expressing in modulus and phase form we have where the phase angle is . The frequency is called the nominal cut off frequency . Physically it may be shown that at this frequency the power in the signal has been reduced by one half and the amplitude is reduced by the factor . In dB terms this frequency is where the amplitude has been reduced by 3dB. Clearly as the time constant T increases so then the cut off frequency reduces and we apply more smoothing to the data, that is we eliminate the higher frequencies. It is important to note that the frequency response is expressed in radianssecond. That is there is a factor of involved. For example choosing a time constant of 5 seconds gives an effective cut off frequency of . One popular use of RC smoothing is to simulate the action of a meter such as used in a Sound Level Meter. These are generally typified by their time constant such as 1 second for S types and 0.125 seconds for F types. For these 2 cases the effective cut off frequencies are 0.16Hz and 1.27Hz respectively. Actually it is not the time constant we usually wish to select but those periods we wish to include. Suppose we have a signal where we wish to include features with a P second period. Now a period P is a frequency . We could then choose a time constant T given by . However we know that we have lost about 30 of the output (-3dB) at . Thus choosing a time constant which exactly corresponds to the periodicities we wish to keep is not the best scheme. It is usually better to choose a slightly higher cut off frequency, say . The time constant is then which in practical terms is similar to . This reduces the loss to around 15 at this periodicity. Hence in practical terms to retain events with a periodicity of or greater then choose a time constant of . This will include the effects of periodicities of down to about . For example if we wish to include the effects of events happening with say an 8 second period ( 0.125Hz) then choose a time constant of 0.8 seconds. This gives a cut off frequency of approximately 0.2Hz so that our 8 second period is well in the main pass band of the filter. If we were sampling the data at 20 timessecond (h 0.05) then the value of N is (0.80.05) 16 and . This gives some insight into how to set . Basically for a known sample rate it typifies the averaging period and selects which high frequency fluctuations will be ignored. By looking at the expansion of the algorithm we can see that it favours the most recent values, and also why it is referred to as exponential weighting. We have Substituting for y k-1 gives Repeating this process several times leads to Because is in the range then clearly the terms to the right become smaller and behave like a decaying exponential. That is the current output is biased towards the more recent events but the larger we choose T then the less bias. In summary we see that the simple formula emphasises recent events smoothes out high frequency (short period) events reveals long term trends Appendix 1 8211 Alternate forms of the equation Caution There are two forms of the exponential averaging equation that appear in the literature. Both are correct and equivalent. The first form as shown above is (A1) The alternate form is 8230(A2) Note the use of in the first equation and in the second equation. In both equations and are values between zero and unity. Earlier was defined as Now choosing to define Hence the alternate form of the exponential averaging equation is In physical terms it means that the choice of form one uses depends on how one wants to think of either taking as the feed back fraction equation (A1) or as the fraction of the input equation (A2). The first form is slightly less cumbersome in showing the RC filter relationship, and leads to a simpler understanding in filter terms. Chief Signal Processing Analyst at Prosig Dr Colin Mercer was formerly at the Institute of Sound and Vibration Research (ISVR), University of Southampton where he founded the Data Analysis Centre. He then went on to found Prosig in 1977. Colin retired as Chief Signal Processing Analyst at Prosig in December 2016. He is a Chartered Engineer and a Fellow of the British Computer Society. I think you want to change the 8216p8217 to the symbol for pi. Marco, thank you for pointing that out. I think this is one of our older articles that has been transferred from an old word processing document. Obviously, the editor (me) failed to spot that the pi had not been transcribed correctly. It will be corrected shortly. it8217s a very good article explanation about the exponential averaging I believe there is an error in the formula for T. It should be T h(N-1), not T (N-1)h. Mike, thanks for spotting that. I have just checked back to Dr Mercer8217s original technical note in our archive and it seems that there was error made when transferring the equations to the blog. We will correct the post. Thank you for letting us know Thank you thank you thank you. You could read 100 DSP texts without finding anything saying that an exponential averaging filter is the equivalent of an R-C filter. hmm, do you have the equation for an EMA filter correct is it not Yk aXk (1-a)Yk-1 rather than Yk aYk-1 (1-a)Xk Alan, Both forms of the equation appear in the literature, and both forms are correct as I will show below. The point you make is important one because using the alternate form means that the physical relationship with an RC filter is less apparent, moreover the interpretation of the meaning of a shown in the article is not appropriate for the alternate form. First let us show both forms are correct. The form of the equation that I have used is and the alternate form which does appear in many texts is Note in the above I have used latex 1latex in the first equation and latex 2latex in the second equation. The equality of both forms of the equation is shown mathematically below taking simple steps at a time. What is not the same is the value used for latex latex in each equation. In both forms latex latex is a value between zero and unity. First rewrite equation (1) replacing latex 1latex by latex latex. This gives latexyk y (1 - beta)xklatex 8230(1A) Now define latexbeta (1 - 2)latex and so we also have latex 2 (1 - beta)latex. Substituting these into equation (1A) gives latexyk (1 - 2)y 2xklatex 8230(1B) And finally re-arranging gives This equation is identical to the alternate form given in equation (2). Put more simply latex 2 (1 - 1)latex. In physical terms it means that the choice of form one uses depends on how one wants to think of either taking latexalphalatex as the feed back fraction equation (1) or as the fraction of the input equation (2). As mentioned above I have used the first form as it is slightly less cumbersome in showing the RC filter relationship, and leads to simpler understanding in filter terms. However omitting the above is, in my view, a deficiency in the article as other people could make an incorrect inference so a revised version will appear soon. I8217ve always wondered about this, thanks for describing it so clearly. I think another reason the first formulation is nice is alpha maps to 8216smoothness8217: a higher choice of alpha means a 8216more smooth8217 output. Michael Thanks for observation 8211 I will add to the article something on those lines as it is always better in my view to relate to physical aspects. Dr Mercer, Excellent article, thank you. I have a question regarding the time constant when used with an rms detector as in a sound level meter that you refer to in the article. If I use your equations to model an exponential filter with Time Constant 125ms and use an input step signal, I do indeed get an output that, after 125ms, is 63.2 of the final value. However, if I square the input signal and put this through the filter, then I see that I need to double the time constant in order for the signal to reach 63.2 of its final value in 125ms. Can you let me know if this is expected. Danke vielmals. Ian Ian, If you square a signal like a sine wave then basically you are doubling the frequency of its fundamental as well as introducing lots of other frequencies. Because the frequency has in effect been doubled then it is being 8216reduced8217 by a greater amount by the low pass filter. In consequence it takes longer to reach the same amplitude. The squaring operation is a non linear operation so I do not think it will always double precisely in all cases but it will tend to double if we have a dominant low frequency. Also note that the differential of a squared signal is twice the differential of the 8220un-squared8221 signal. I suspect you might be trying to get a form of mean square smoothing, which is perfectly fine and valid. It might be better to apply the filter and then square as you know the effective cutoff. But if all you have is the squared signal then using a factor of 2 to modify your filter alpha value will approximately get you back to the original cut off frequency, or putting it a bit simpler define your cutoff frequency at twice the original. Thanks for your response Dr Mercer. My question was really trying to get at what is actually done in an rms detector of a sound level meter. If the time constant is set for 8216fast8217 (125ms) I would have thought that intuitively you would expect a sinusoidal input signal to produce an output of 63.2 of its final value after 125ms, but since the signal is being squared before it gets to the 8216mean8217 detection, it will actually take twice as long as you explained. The principle objective of the article is to show the equivalence of RC filtering and exponential averaging. If we are discussing the integration time equivalent to a true rectangular integrator then you are correct that there is a factor of two involved. Basically if we have a true rectangular integrator that integrates for Ti seconds the the equivalent RC integator time to achieve the same result is 2RC seconds. Ti is different from the RC 8216time constant8217 T which is RC. Thus if we have a 8216Fast8217 time constant of 125 msec, that is RC 125 msec then that is equivalent to a true integration time of 250 msec Thank you for the article, it was very helpful. There are some recent papers in neuroscience that use a combination of EMA filters (short-windowed EMA 8211 long-windowed EMA) as a band-pass filter for real time signal analysis. I would like to apply them, but I am struggling with the window sizes different research groups have used and its correspondence with the cutoff frequency. Let8217s say I want to keep all the frequencies below 0.5Hz (aprox) and that I acquire 10 samples second. This means that fp 0.5Hz P 2s T P100.2 h 1fs0.1 Thefore, the window size I should be using should be N3. Is this reasoning correct Before answering your question I must comment on the use of two high pass filters to form a band pass filter. Presumably they operate as two separate streams, so one result is the content from say latexf latex to half sample rate and the other is the content from say latexf latex to half sample rate. If all that is being done is the difference in mean square levels as indicating the power in the band from latexf latex to latexf latex then it may be reasonable if the two cut off frequencies are sufficiently far apart but I expect that the people using this technique are trying to simulate a narrower band filter. In my view that would be unreliable for serious work, and would be a source of concern. Just for reference a band pass filter is a combination of a low frequency High Pass filter to remove the low frequencies and a high frequency Low pass filter to remove the high frequencies. There is of course a low pass form of an RC filter, and hence a corresponding EMA. Perhaps though my judgement is being overcritical without knowing all the facts So could you please send me some references to the studies you mentioned so I may critique as appropriate. Maybe they are using a low pass as well as a high pass filter. Now turning to your actual question about how to determine N for a given target cut-off frequency I think it is best to use the basic equation T(N-1)h. The discussion about periods was aimed at giving people a feel of what was going on. So please see the derivation below. We have the relationships latexT(N-1)hlatex and latexT12 latex where latexfclatex is the notional cut-off frequency and h is the time between samples, Clearly latexh 1 latex where latexfslatex is the sample rate in samplessec. Rearranging T(N-1)h into a suitable form to include the cut-off frequency, latexfclatex and the sample rate, latexfslatex, is shown below. So using latexfc 0.5Hzlatex and latexfs 10latex samplessec so that latex(fcfs) 0.05latex gives So the closest integer value is 4. Re-arranging the above we have So with N4 we have latexfc 0.5307 Hzlatex. Using N3 gives an latexfclatex of 0.318 Hz. Note with N1 we have a complete copy with no filtering.
Comments
Post a Comment