Gleitende Durchschnittliche Fenstergröße

Ich versuche, meine diskrete Zeit Datenpunkte mit der Methode von WMA zu glätten. Derzeit bin ich mit n als die Fenstergröße und das Gewicht Array,. Wenn der y-Wert jedes Punktes irrelevant ist, kann ich einfach einfach zufällig meine Größe n wählen. Allerdings hoffe ich, die ursprünglichen Werte der Datenpunkte im besten Fall zu reservieren. So kann ich nicht wählen, ein großes Fenster, das alles zu flach. Meine Abkürzung freq. 3 Hz und die Abtastrate 50 Hz beträgt. Wie kann ich die Größe des Fensters n wählen Danke im Voraus Das Fenster erfüllt, was bedeutet, dass die Verstärkung des entsprechenden gleitenden Durchschnitts-Filter 1 bei DC ist. Für die Bestimmung der Grenzfrequenz müssen wir den Frequenzgang des Fensters berechnen: Nach einiger Algebra erhalten Sie jetzt den Wert von N, für den die Größe von (1) bei der Grenzfrequenz thetac2pifrac 1sqrt wird (-3dB). Da N ganzzahlig sein muß, kann man keine beliebige Grenzfrequenz erreichen, aber die gegebene Grenzfrequenz wird annähernd durch N9 erreicht, für die W (e) 0,698 (-3,13dB). Das ist genau das Fenster, das ich vermutete. Es enthält nun auch den vorgeschlagenen Normierungsfaktor I. Also ist die Antwort richtig, wie sie steht. Wenn Sie damit zufrieden sind, akzeptieren Sie bitte die Antwort (indem Sie auf das Häkchen klicken), um zu zeigen, dass Ihre Frage zufriedenstellend beantwortet wurde. Ein einfacher gleitender Durchschnitt ist ein Algorithmus, der das ungewichtete Mittel der letzten n Abtastwerte berechnet. Der Parameter n wird oft als Fenstergröße bezeichnet, da der Algorithmus als Fenster betrachtet werden kann, das über die Datenpunkte gleitet. Unter Verwendung einer rekursiven Formulierung des Algorithmus wird die Anzahl der Operationen, die pro Probe erforderlich sind, auf eine Addition, eine Subtraktion und eine Division reduziert. Da die Formulierung unabhängig von der Fenstergröße n ist. Die Laufzeitkomplexität ist O (1). D. h. Die rekursive Formel des ungewichteten gleitenden Mittelwertes ist, wobei avg der rollende Mittelwert und x ein Datenpunkt ist. Wenn also das Fenster nach rechts gleitet, fällt ein Datenpunkt, der Schwanz, aus und ein Datenpunkt, der Kopf, bewegt sich hinein. Implementierung Eine Implementierung des einfachen gleitenden Mittels muss folgendes berücksichtigen Algorithmusinitialisierung Solange Das Fenster nicht vollständig mit Werten belegt wird, schlägt die rekursive Formel fehl. Lagerung Der Zugriff auf das Heizelement ist erforderlich, was je nach Implementierung eine Speicherung von n Elementen erfordert. Meine Implementierung verwendet die vorgestellte Formel, wenn das Fenster vollständig mit Werten gefüllt wird, und wechselt andererseits auf die Formel, die den Mittelwert aktualisiert, indem die Summe der vorherigen Elemente neu berechnet wird. Beachten Sie, dass dies aufgrund der Gleitpunktarithmetik zu numerischen Instabilitäten führen kann. Was den Speicherverbrauch angeht, verwendet die Implementierung Iteratoren zum Verfolgen von Kopf - und Schwanz-Elementen. Dies führt zu einer Implementierung mit konstantem Speicherbedarf unabhängig von der Fenstergröße. Hier ist die Aktualisierungsprozedur, die das Fenster nach rechts verschiebt. In. NET die meisten der Sammlungen ihre Enumeratoren ungültig, wenn die zugrundeliegende Sammlung geändert wird. Die Implementierung setzt jedoch auf gültige Enumeratoren. Insbesondere bei streamingbasierten Anwendungen muss die zugrundeliegende Sammlung geändert werden, wenn ein neues Element eintrifft. Eine Möglichkeit, dies zu bewältigen, besteht darin, eine einfache kreisförmige Sammlung von fester Größe der Grße n1 zu schaffen, die ihre Iteratoren niemals ungültig macht und alternativ ein Element hinzufügt und die Verschiebung aufruft. Ich wünschte, ich könnte herausfinden, wie man tatsächlich implementieren, da die Test-Funktion ist sehr verwirrend, me8230 Muss ich Daten in Array konvertieren, dann SMA SMA SMA (20, Array) für eine 20-Periode SMA laufen Wie behandle ich Shift () - Funktion Ist es notwendig, Konstruktoren zu implementieren. (Entschuldigen Sie das Durcheinander). Nein Sie don8217t müssen Ihre Daten in ein Array zu konvertieren, solange Ihre Daten implementiert IEnumerable1 und die Aufzählung Typ ist doppelt. Soweit Ihr privates Messaging betroffen ist, müssen Sie das DataRow zu etwas umwandeln, das von den doppelten Werten aufzählbar ist. Ihr Ansatz funktioniert. Shift, verschiebt das Fenster um eine Position nach links. Für einen Datensatz von etwa 40 Werten und eine 20-stündige SMA haben Sie 21 Positionen das Fenster passt in (40 8211 20 1). Jedes Mal, wenn Sie Shift () aufrufen, wird das Fenster um eine Position nach links verschoben, und Average () gibt die SMA für die aktuelle Fensterposition zurück. Das heißt, der ungewichtete Durchschnitt aller Werte innerhalb des Fensters. Darüber hinaus ermöglicht meine Implementierung, die SMA zu berechnen, auch wenn das Fenster nicht vollständig am Anfang gefüllt ist. Also im Wesentlichen Hope dies hilft. Alle weiteren Fragen COPYRIGHT NOTICE Christoph Heindl und cheind. wordpress, 2009-2012. Unerlaubte Verwendung und Vervielfältigung dieses Materials ohne ausdrückliche und schriftliche Genehmigung von diesem Blog-Autor andor Eigentümer ist streng verboten. Auszüge und Links können verwendet werden, sofern Christoph Heindl und cheind. wordpress mit entsprechender und konkreter Orientierung zum Originalinhalt volle und klare Gutschrift erteilt werden. Aktuelle Beiträge Ich muss einen gleitenden Durchschnitt Filter, der eine Cut-off-Frequenz von 7,8 Hz zu entwerfen. Ich habe gleitende durchschnittliche Filter vor verwendet, aber soweit ich weiß, ist der einzige Parameter, der eingegeben werden kann, die Anzahl der zu durchschnittlichen Punkte. Wie kann sich dies auf eine Grenzfrequenz beziehen Die Inverse von 7,8 Hz beträgt 130 ms und Im arbeiten mit Daten, die bei 1000 Hz abgetastet werden. Bedeutet dies implizieren, dass ich sollte eine gleitende durchschnittliche Filter-Fenstergröße von 130 Proben verwenden, oder gibt es etwas anderes, das ich hier fehlte, ist der Filter, der in der Zeitdomäne zu entfernen verwendet wird Das Rauschen hinzugefügt und auch für Glättung Zweck, aber wenn Sie die gleiche gleitende durchschnittliche Filter im Frequenzbereich für Frequenztrennung dann Leistung wird am schlimmsten. So dass in diesem Fall nutzen Frequenzbereich Filter ndash user19373 Feb 3 16 at 5:53 Der gleitende Durchschnitt Filter (manchmal auch umgangssprachlich als Boxcar-Filter) hat eine rechteckige Impulsantwort: Oder anders ausgedrückt: Denken Sie daran, dass eine diskrete Zeit Frequenz Frequenzgang Gleich der diskreten Zeit-Fourier-Transformation ihrer Impulsantwort ist, können wir sie wie folgt berechnen: Was am meisten für Ihren Fall interessiert ist, ist die Amplitudenreaktion des Filters H (omega). Mit ein paar einfachen Manipulationen, können wir, dass in einer einfacher zu verstehen: Das sieht vielleicht nicht leichter zu verstehen. Allerdings wegen Eulers Identität. Erinnern, dass: Daher können wir schreiben, die oben als: Wie ich schon sagte, was Sie wirklich besorgt ist die Größe der Frequenzgang. So können wir die Größenordnung der oben genannten zu vereinfachen, um es weiter zu vereinfachen: Hinweis: Wir sind in der Lage, die exponentiellen Begriffe aus, weil sie nicht beeinflussen die Größe des Ergebnisses e 1 für alle Werte von Omega. Da xy xy für irgendwelche zwei endlichen komplexen Zahlen x und y ist, können wir schließen, daß die Anwesenheit der exponentiellen Terme die Gesamtgrößenreaktion nicht beeinflußt (sie beeinflussen die Systemphasenreaktion). Die resultierende Funktion innerhalb der Größenklammern ist eine Form eines Dirichlet-Kerns. Sie wird manchmal als periodische sinc-Funktion bezeichnet, weil sie der sinc-Funktion etwas im Aussehen ähnelt, aber stattdessen periodisch ist. Wie auch immer, da die Definition der Cutoff-Frequenz etwas unterspezifiziert ist (-3 dB Punkt -6 dB Punkt erste sidelobe Null), können Sie die obige Gleichung, um für was auch immer Sie brauchen, zu lösen. Im Einzelnen können Sie Folgendes tun: Stellen Sie H (omega) auf den Wert ein, der der Filterantwort entspricht, die Sie bei der Cutoff-Frequenz wünschen. Set Omega gleich der Cutoff-Frequenz. Um eine kontinuierliche Frequenz auf den diskreten Zeitbereich abzubilden, denken Sie daran, dass osga 2pi frac, wobei fs Ihre Abtastrate ist. Finden Sie den Wert von N, der Ihnen die beste Übereinstimmung zwischen der linken und der rechten Seite der Gleichung gibt. Das sollte die Länge des gleitenden Durchschnitts sein. Wenn N die Länge des gleitenden Mittelwerts ist, dann ist eine angenäherte Grenzfrequenz F (gültig für N gt 2) bei der normalisierten Frequenz Fffs: Der Kehrwert dieser Gleichung ist für große N asymptotisch korrekt und hat etwa 2 Fehler Für N2 und weniger als 0,5 für N4. P. S. Nach zwei Jahren, hier schließlich, was war der Ansatz folgte. Das Ergebnis basiert auf der Annäherung des MA-Amplitudenspektrums um f0 als Parabel (2. Ordnung) nach MA (Omega) ca. 1 (frac - frac) Omega2, die genauer in der Nähe des Nulldurchgangs von MA (Omega) Frac durch Multiplikation von Omega mit einem Koeffizienten, der MA (Omega), ca. 10.907523 (frac-frac) Omega2 ergibt. Die Lösung von MA (Omega) - frac 0 liefert die obigen Ergebnisse, wobei 2pi F Omega. Alle der oben genannten bezieht sich auf die -3dB abgeschnitten Frequenz, das Thema dieser Post. Manchmal ist es zwar interessant, ein Dämpfungsprofil im Stoppband zu erhalten, das vergleichbar ist mit dem eines 1. Ordnung IIR-Tiefpaßfilters (Einpol-LPF) mit einer gegebenen -3dB Grenzfrequenz (ein solcher LPF wird auch Leaky-Integrator genannt, Mit einem Pol nicht genau an DC, aber nah an ihm). Tatsächlich haben sowohl der MA als auch der 1. Ordnung IIR LPF -20dBdekade Slope im Stopband (man braucht ein größeres N als das in der Figur verwendete N32, um dies zu sehen), während MA jedoch spektrale Nullpunkte bei FkN und a hat 1f Evelope hat das IIR-Filter nur ein 1f-Profil. Wenn man ein MA-Filter mit ähnlichen Rauschfilterungs-Fähigkeiten wie dieses IIR-Filter erhalten möchte und die gleichgeschnittenen 3dB-Grenzfrequenzen anpaßt, würde er beim Vergleich der beiden Spektren erkennen, daß die Stopbandwelligkeit des MA-Filters endet 3dB unter dem des IIR-Filters. Um die gleiche Stoppbandwelligkeit (d. h. dieselbe Rauschleistungsdämpfung) wie das IIR-Filter zu erhalten, können die Formeln wie folgt modifiziert werden: Ich fand das Mathematica-Skript zurück, wo ich die Unterbrechung für mehrere Filter einschließlich des MA-Werts berechnete. Das Ergebnis basiert auf der Annäherung des MA-Spektrums um f0 als Parabel nach MA (Omega) Sin (OmegaN2) Sin (Omega2) Omega 2piF MA (F) ca. N16F2 (N-N3) pi2. Und Ableitung der Kreuzung mit 1sqrt von dort. Ndash Massimo Jan 17 16 am 2:08


Comments