Wednesday 11 October 2017

Moving Average Filter Applet


Dieses Java-Applet ist eine Demonstration von digitalen Filtern. Sie sollten eine Geräuschwellenform hören, wenn das Applet gestartet wird. Wenn Sie eine Nachricht erhalten, benötigen Sie Java 2 für Sound, dann sollten Sie das Java-Plug-In erhalten. Das Applet startet mit einem Tiefpassfilter. Es zeigt den Frequenzgang des Filters, das Spektrum der abgespielten Wellenform, die Wellenform selbst und die Impulsantwort des Filters. Klicken Sie auf die Antwortkurve, um die Grenzfrequenz zu ändern. Das Frequenzgangdiagramm zeigt die Filterantwort (vertikal in dB mit Linien in Intervallen von 10 dB) gegenüber der Frequenz (horizontal dargestellt mit vertikalen Linien, die Oktaven markieren). Die Spektralkurve zeigt das Spektrum der Schallausgabe. Im Eingabe-Popup-Menü können Sie eine Eingangswellenform auswählen. Die Auswahlmöglichkeiten sind: Noise Sine Wave - wählen Sie die Frequenz aus, indem Sie auf das Spektrum klicken. Sawtooth Wave Dreieck Wave Square Wave Periodisches Rauschen - wählen Sie die Frequenz aus, indem Sie auf das Spektrum klicken. Sweep - eine Sinuswelle, die das Frequenzspektrum mit einer einstellbaren Frequenz durchstreift. Impulse Verschiedene mp3-Dateien (Sie können eigene hinzufügen, indem Sie das Applet herunterladen und dann die Datei index. html bearbeiten) Im Popup-Menü Filter können Sie einen Filter auswählen. Auf dieser Seite finden Sie technische Informationen zu den Filtertypen. Die Auswahlmöglichkeiten sind: FIR Tiefpaß - filtert hohe Frequenzen aus (alles unterhalb der Cutoff-Frequenz, die durch Anklicken des Ansprechgraphen mit der Maus einstellbar ist). FIR Hochpass - filtert niedrige Frequenzen aus. FIR Bandpass - filtert alles außer einer Reihe von Frequenzen. Verwenden Sie die Regler Mittelfrequenz und Passbandbreite, um den Bereich einzustellen. FIR Band-Stop - filtert eine Reihe von Frequenzen. Hier sind einige einstellbare Parameter, die die Qualität der FIR-Filter beeinflussen: die Anzahl der Punkte, die Sie mit dem Schieberegler Auftrag (mehr Punkte ist besser) und dem Fenster, das Sie mit dem Fenster Popup auswählen, einstellen können. Ein FIR-Filter wird durch seine Impulsantwort definiert, die Sie am unteren Rand des Fensters sehen können. Um die Fensterfunktion anzuzeigen, wählen Sie FIR Tiefpaß. Setzen Sie die Grenzfrequenz nahe Null und betrachten Sie die Impulsantwort. Benutzerdefiniertes FIR - zeichnen Sie auf dem Frequenzgangdiagramm, um Ihren eigenen Filter zu spezifizieren. Die tatsächliche Antwort, die in rot angezeigt wird, wird durch das Schieberegler "Auftrag" und "Fenster" beeinflusst. Kein Filter Butterworth Low-Pass - ein flacher Filter, der hohe Frequenzen filtert Butterworth High-Pass - ein flacher Filter, der niedrige Frequenzen filtert Butterworth Bandpass - ein Flachfilter, der Frequenzen außerhalb eines bestimmten Bandes filtert Butterworth Band - Stopp - ein Flachfilter, der die Frequenzen innerhalb eines bestimmten Bandes filtert. Chebyshev Low-Pass - ein Tiefpaßfilter mit einstellbarer Welligkeit im Durchlaßbereich Chebyshev Hochpass, Bandpass, Bandstopp Inv Cheby Tiefpass - inverser Chebyshev (auch Chebyshev-Typ II genannt), ein Tiefpaßfilter mit flachem Durchlaßbereich, aber eine einstellbare Welligkeit im Stopband Inv Cheby Hochpass, Bandpass, Bandstop Elliptischer Tiefpass - ( Auch Cauer genannt) ein Tiefpaßfilter mit einstellbarer Welligkeitsmenge im Durchlaßbereich und Stopband. Die Einstellung der Übergangsbandbreite ändert die Stoppbanddämpfung. Elliptischer Hochpass, Bandpass, Bandstopp Kamm () - dieser Filter (benutzt für Geräusche) klingt wie jemand, der in eine Röhre bläst. Comb (-) - dies ist ein Rohr mit einem Ende bedeckt. Verzögerung - ein Echofilter (das gleiche wie ein Kammfilter, aber mit längeren Verzögerungen) Zupf-String-Filter - wenn das Eingabe-Popup auf Impulse eingestellt ist, klingt das wie eine Saite, die gezupft wird. Invers Comb - Resonanz bei einer Frequenz Reson w / Zeros - ein Reson - Filter mit Nullen bei 0 und die Hälfte der Abtastrate Notch - filtert einen engen Frequenzbereich Moving Average - einen einfachen FIR - Versuch bei einem Tiefpassfilter. Dieser Filter (bei Verwendung auf Rauschen) erinnert mich an einen Atari 2600. Triangle Allpass - leitet alle Frequenzen gleich, aber mit unterschiedlicher Phasenverzögerung. Verwenden Sie das Menü "Phase Response" im Menü "Ansicht", um die Phasenreaktion anzuzeigen. Bei tiefen Frequenzen wirkt dieses Filter als Bruchteilverzögerung (Verzögerung von weniger als einer Probe). Gaussian - die Impulsantwort und der Frequenzgang sind beide Gauss-förmige Random Custom IIR - ziehen Sie die Pole und Nullen herum, um den Filter zu ändern. Über das Sampling Rate-Popup können Sie die Abtastrate anzeigen oder ändern. Sie können die Rate nicht ändern, wenn die Eingabe ein MP3 ist. Im Menü Ansicht können Sie die verschiedenen Ansichten ein - oder ausschalten. Der Eintrag Logfrequency Scale zeigt den Frequenzgang mit einem logarithmischen Plot statt linear an. Mit der Option Gesamte Wellenform anzeigen werden die Wellenformsegmente waagerecht zusammengedrückt, so dass jeder im Fenster auf diese Weise passt, wird die gesamte Wellenform angezeigt, aber das Fenster wird normalerweise nicht breit genug sein, um jedes Muster einzeln anzuzeigen. Das Ferris-Diagramm zeigt ein Ferris-Diagramm der Übertragungsfunktion an. Bei Anzeige des Frequenzgangs zeigt das Applet nur den Teil des Spektrums von 0 bis zur Nyquist-Frequenz (pi) an. Der Rest der Antwort bis zu 2pi ist nur ein Spiegelbild von diesem, und dann die Antwort wiederholt sich alle 2pi. Zum Beispiel hier ein Frequenzgang wie im Applet angezeigt (bis zu pi): Hier ist die Antwort bis zu 4pi: Gute Bücher über digitale Filter: Steiglitz (große Intro zu DSP hat Infos über Kamm-Filter, Resons, Zupfinstring ) Smith (herunterladbar) Winder MitraI im Wesentlichen ein Array von Werten wie folgt: Das obige Array ist vereinfacht, Im sammeln 1 Wert pro Millisekunde in meinem realen Code und ich müssen die Ausgabe auf einem Algorithmus, den ich schrieb, um die nächste Peak vor zu finden verarbeiten Ein Zeitpunkt. Meine Logik schlägt fehl, weil in meinem Beispiel oben 0.36 die wahre Spitze ist, aber mein Algorithmus würde rückwärts schauen und sehen die sehr letzte Zahl 0.25 als die Spitze, als theres eine Abnahme zu 0.24 vor ihm. Das Ziel ist, diese Werte zu nehmen und einen Algorithmus auf sie, die glätten sie ein wenig, so dass ich mehr lineare Werte. (Dh: Id wie meine Ergebnisse curvy, nicht jaggedy) Ive wurde gesagt, um einen exponentiellen gleitenden durchschnittlichen Filter auf meine Werte anzuwenden. Wie kann ich dies tun Es ist wirklich schwer für mich, mathematische Gleichungen zu lesen, gehe ich viel besser mit Code. Wie verarbeite ich Werte in meinem Array, die Anwendung einer exponentiellen gleitenden Durchschnittsberechnung, um sie herauszufordern, um einen exponentiellen gleitenden Durchschnitt zu berechnen. Müssen Sie einige Zustand zu halten und Sie benötigen einen Tuning-Parameter. Dies erfordert eine kleine Klasse (vorausgesetzt, Sie verwenden Java 5 oder höher): Instantiate mit dem Decay-Parameter, die Sie wollen (kann Abstimmung sollte zwischen 0 und 1) und dann mit Average () zu filtern. Beim Lesen einer Seite auf einige mathematische Rekursion, alles, was Sie wirklich wissen müssen, wenn Sie es in Code ist, dass Mathematiker gerne Indizes in Arrays und Sequenzen mit Indizes schreiben. (Theyve einige andere Anmerkungen außerdem, die nicht helfen.) Jedoch ist die EMA ziemlich einfach, da Sie nur an einen alten Wert erinnern müssen, der keine komplizierten Zustandarrays erfordert. Beantwortet Feb 8 12 at 20:42 TKKocheran: Ziemlich viel. Isn39t es schön, wenn die Dinge einfach sein können (Wenn Sie mit einer neuen Sequenz beginnen, erhalten Sie einen neuen Mittelwert.) Beachten Sie, dass die ersten paar Begriffe in der durchschnittlichen Sequenz wird ein bisschen durch Randeffekte springen, aber Sie erhalten die mit anderen gleitenden Durchschnitten auch. Allerdings ist ein guter Vorteil, dass Sie die gleitende durchschnittliche Logik in die Mittelung einwickeln und experimentieren können, ohne den Rest des Programms zu viel zu stören. Ndash Donal Fellows Ich habe eine harte Zeit, Ihre Fragen zu verstehen, aber ich werde versuchen, trotzdem zu beantworten. 1) Wenn Ihr Algorithmus 0,25 statt 0,36 gefunden hat, dann ist es falsch. Es ist falsch, weil es eine monotone Zunahme oder Abnahme (das ist immer nach oben oder immer nach unten). Wenn Sie ALLE Ihre Daten nicht klassifizieren, sind Ihre Datenpunkte - wie Sie sie darstellen - nichtlinear. Wenn Sie wirklich den maximalen Wert zwischen zwei Zeitpunkten finden wollen, dann schneiden Sie Ihr Array von tmin zu tmax und finden Sie das Maximum dieses Unterarrays. 2) Nun ist das Konzept der gleitenden Durchschnitte sehr einfach: vorstellen, dass ich die folgende Liste haben: 1.4, 1.5, 1.4, 1.5, 1.5. Ich kann es glätten, indem ich den Durchschnitt von zwei Zahlen: 1.45, 1.45, 1.45, 1.5. Beachten Sie, dass die erste Zahl ist der Durchschnitt von 1,5 und 1,4 (zweite und erste Zahlen) die zweite (neue Liste) ist der Durchschnitt von 1,4 und 1,5 (dritte und zweite alte Liste) die dritte (neue Liste) der Durchschnitt von 1,5 und 1,4 (Vierte und dritte), und so weiter. Ich könnte es Zeitraum drei oder vier gemacht haben, oder n. Beachten Sie, wie die Daten viel glatter sind. Ein guter Weg, um zu sehen, gleitende Durchschnitte bei der Arbeit ist, gehen Sie zu Google Finance, wählen Sie eine Aktie (versuchen Tesla Motors ziemlich volatil (TSLA)) und klicken Sie auf Technische Daten am unteren Rand des Diagramms. Wählen Sie Moving Average mit einer bestimmten Periode und Exponential gleitenden Durchschnitt, um ihre Differenzen zu vergleichen. Exponentielle gleitende Durchschnitt ist nur eine weitere Ausarbeitung dieser, aber Gewichte die älteren Daten weniger als die neuen Daten ist dies ein Weg, um die Glättung nach hinten auszugleichen. Bitte lesen Sie den Wikipedia-Eintrag. Also, dies ist eher ein Kommentar als eine Antwort, aber die kleine Kommentar-Box war nur zu klein. Viel Glück. Wenn Sie Probleme mit der Mathematik haben, könnten Sie mit einem einfachen gleitenden Durchschnitt statt exponentiell gehen. Also die Ausgabe erhalten Sie die letzten x-Terme durch x geteilt werden. Ungetestetes Pseudocode: Beachten Sie, dass Sie die Anfangs - und Endteile der Daten behandeln müssen, da deutlich, dass Sie die letzten 5 Ausdrücke nicht durchschnittlich sind, wenn Sie auf Ihrem 2. Datenpunkt sind. Außerdem gibt es effizientere Methoden, diesen gleitenden Durchschnitt (sum sum - älteste neueste) zu berechnen, aber dies ist, um das Konzept von dem, was passiert, zu bekommen. Antwort # 2 am: Mai 21, 2010, 10:31:49 pm »Ihre Antwort 2016 Stack Exchange, IncDie Wissenschaftler und Ingenieure Leitfaden für digitale Signalverarbeitung Von Steven W. Smith, Ph. D. Wie der Name andeutet, arbeitet das gleitende Mittelfilter durch Mittelung einer Anzahl von Punkten von dem Eingangssignal, um jeden Punkt im Ausgangssignal zu erzeugen. In Gleichung ist dies geschrieben: Wo ist das Eingangssignal, ist das Ausgangssignal und M ist die Anzahl der Punkte im Mittelwert. Beispielsweise ist bei einem 5-Punkt-Gleitmittelfilter Punkt 80 im Ausgangssignal gegeben durch: Alternativ kann die Gruppe von Punkten aus dem Eingangssignal symmetrisch um den Ausgangspunkt gewählt werden: Dies entspricht der Änderung der Summation in Gl . 15-1 von: j 0 bis M -1, bis: j - (M -1) / 2 bis (M -1) / 2. Zum Beispiel wird in einem 10-Punkt-gleitenden Durchschnittsfilter der Index j. Kann von 0 bis 11 (einseitige Mittelung) oder -5 bis 5 (symmetrische Mittelung) laufen. Symmetrische Mittelung erfordert, dass M eine ungerade Zahl ist. Die Programmierung ist etwas einfacher mit den Punkten auf nur einer Seite, jedoch ergibt sich eine relative Verschiebung zwischen den Eingangs - und Ausgangssignalen. Sie sollten erkennen, dass das gleitende Durchschnittsfilter eine Faltung mit einem sehr einfachen Filterkern ist. Zum Beispiel hat ein 5-Punkt-Filter den Filterkernel: 82300, 0, 1/5, 1/5, 1/5, 1/5, 1/5, 0, 08230. Das heißt, der gleitende Durchschnittsfilter ist eine Faltung Des Eingangssignals mit einem Rechteckimpuls mit einer Fläche von Eins. Tabelle 15-1 zeigt ein Programm zum Implementieren des gleitenden Durchschnittsfilters.

No comments:

Post a Comment