Ich muss einen gleitenden Durchschnitt über eine Datenreihe berechnen, innerhalb einer for-Schleife muss ich den gleitenden Durchschnitt über N 9 Tage bekommen. Das Array I m, das in 1 ist, ist 4 Serie von 365 Werten M, die selbst Mittelwerte eines anderen Satzes sind Daten Ich möchte die Mittelwerte meiner Daten mit dem gleitenden Durchschnitt in einer Handlung zu zeichnen. Ich googeln ein bisschen über bewegte Durchschnitte und die Konv-Befehl und fand etwas, was ich versucht, Umsetzung in meinem Code. So im Grunde, ich berechnen meine Mittel und Handlung Es mit einem falschen gleitenden Durchschnitt Ich wählte den WTS-Wert direkt von der Mathworks-Website, so dass ist falsche Quelle Mein Problem aber ist, dass ich nicht verstehe, was diese wts ist Könnte jemand erklären Wenn es etwas mit den Gewichten der zu tun hat Werte, die in diesem Fall ungültig sind Alle Werte werden gleich gewichtet. Und wenn ich das ganz falsch mache, könnte ich etwas Hilfe mit ihm bekommen. Mein aufrichtiger Dank. Schicht Sep 23 14 um 19 05.Using conv ist ein ausgezeichneter Weg zu Implementiere einen gleitenden Durchschnitt In dem Code, den du benutzt hast, ist wts wie viel y Ou wägen jeden Wert, wie Sie vermutet, die Summe von diesem Vektor sollte immer gleich Eins Wenn Sie möchten, um jeden Wert gleichmäßig Gewicht und tun Sie eine Größe N bewegten Filter dann möchten Sie tun. Um das gültige Argument in conv wird in führen Mit weniger Werten in Ms als Sie haben in M Verwenden Sie das gleiche, wenn Sie don t mind die Auswirkungen der Null-Polsterung Wenn Sie die Signalverarbeitung Toolbox können Sie cconv verwenden, wenn Sie einen kreisförmigen gleitenden Durchschnitt versuchen wollen Etwas like. You sollte die conv lesen Und cconv-Dokumentation für weitere Informationen, wenn Sie bereits t bereits. Sie können Filter verwenden, um einen laufenden Durchschnitt zu finden, ohne eine for-Schleife zu verwenden Dieses Beispiel findet den laufenden Durchschnitt eines 16-Element-Vektors, mit einer Fenstergröße von 5,2 glatt als Teil der Curve Fitting Toolbox, die in den meisten Fällen verfügbar ist. yy glatt y glättet die Daten in der Spalte Vektor y mit einem gleitenden Durchschnitt Filter Ergebnisse werden in der Spalte Vektor yy Die Standard-Span für den gleitenden Durchschnitt ist 5puting ein laufender Durchschnitt einer einfachen 1 - D Daten-Vektor scheint einfach genug In der Tat, die MATLAB-Dokumentation für FILTER glücklich behauptet, etwas wie. Sie können Filter verwenden, um einen laufenden Durchschnitt ohne Verwendung einer for-Schleife Dieses Beispiel findet den laufenden Durchschnitt eines 16-Element-Vektor, mit einer Fenstergröße von 3.Image von rohem und gefilterten Datenplot von oben Beispiel. Für meine Zwecke gibt es zwei ärgerliche Dinge über dieses Ergebnis Ausgangspunkt n ist der Durchschnitt der Eingangspunkte n-windowSize-1 nie nicht zentriert, wie durch die horizontale Verschiebung und Punkte belegt Auf der linken Seite der verfügbaren Daten werden als Nullen behandelt. FILTFILT befasst sich mit beiden Fragen, hat aber andere Nachteile Es ist ein Teil der Signal Processing Toolbox, und es geht nicht gut mit NaNs, die ich aus dem Mittel ausgeschlossen habe. Einige Leute Auf FEX offensichtlich hatte die gleichen Frustrationen, aber es scheint seltsam zu mir, dass etwas, das diese einfache erfordert benutzerdefinierte Code Alles, was ich bin fehlt hier. asked Aug 10 10 bei 21 39.Hmm gibt es sogar eine Möglichkeit, die Polsterung zu tun und den Durchschnitt zu bekommen ist Scheint das wenn Sagen Sie 3 Bins fallen von der Kante im Vergleich zu 1, müssten Sie mit verschiedenen Werten auflegen, um den richtigen Durchschnitt für die erste bin zu erhalten. Im Einzelnen müssen Sie mit dem Durchschnitt der gültigen Fächer, die von dem Punkt abhängen, Unter Berücksichtigung Also ich bin mir nicht sicher, dass dies sogar möglich ist mit Padding Matt Mizumi Aug 11 10 at 4 06.Frequenzantwort des laufenden durchschnittlichen Filters. Der Frequenzgang eines LTI-Systems ist die DTFT der Impulsantwort. Die Impulsantwort von L-Sample gleitenden Durchschnitt ist. Da der gleitende Mittelwertfilter FIR ist, reduziert sich der Frequenzgang auf die endliche Summe. Wir können die sehr nützliche Identität verwenden, um den Frequenzgang zu schreiben, wo wir Aej N 0 und ML 1 gelassen haben Wir können an der Größe dieser Funktion interessiert sein, um festzustellen, welche Frequenzen durch den Filter ungedämpft werden und die abgeschwächt sind. Unterhalb ist ein Diagramm der Größe dieser Funktion für L 4 rot, 8 grün und 16 blau Die horizontale Achse reicht Von zer O bis radians pro sample. Notice, dass in allen drei Fällen der Frequenzgang hat eine Tiefpass-Kennlinie Eine konstante Komponente Nullfrequenz in der Eingabe passiert durch den Filter ungedämpft Bestimmte höhere Frequenzen, wie 2, werden vollständig durch den Filter eliminiert Allerdings, wenn Die Absicht war, einen Tiefpassfilter zu entwerfen, dann haben wir nicht sehr gut getan. Einige der höheren Frequenzen werden nur um einen Faktor von etwa 1 10 für den 16 Punkt gleitenden Durchschnitt gedämpft oder 1 3 für den vier Punkt gleitenden Durchschnitt Wir können viel tun Besser als das. Die obige Handlung wurde durch die folgenden Matlab-Code erstellt. omega 0 pi 400 pi H4 1 4 1-exp - i omega 4 1-exp - i omega H8 1 8 1-exp-o omega 8 1-exp - I Omega H16 1 16 1-exp - i Omega 16 1-Exp-o Omega-Plot Omega, abs H4 abs H8 abs H16 Achse 0, pi, 0, 1.Copyright 2000- - Universität von Kalifornien, Berkeley.
No comments:
Post a Comment