Skip to main content

Mathematica Gleitender Durchschnitt

Ich habe eine Handlung von Zeitreihen in ggplot2 Paket und ich habe die Moving Average durchgeführt und ich möchte das Ergebnis der gleitenden Durchschnitt auf die Handlung der Zeitreihen hinzufügen. Beispiel des Datensatzes (Seite 31): ambtemp dt -1.14 2007-09-29 00:01:57 -1.12 2007-09-29 00:03:57 -1.33 2007-09-29 00:05:57 -1.44 2007 -09-29 00:07:57 -1.54 2007-09-29 00:09:57 -1.29 2007-09-29 00:11:57 Angewandter Code für die Zeitreihen-Darstellung: Beispiel für Moving Average Plot Beispiel für erwartete Ergebnisse Herausforderung ist, dass die Zeitreihendaten aus dem Datensatz erhalten, die Zeitstempel und Temperatur enthalten, aber Moving Average Daten enthalten nur die durchschnittliche Spalte und nicht die Zeitstempel und Anpassung dieser beiden können Inkonsistenz verursachen. Ich habe eine Liste von Datenpunkten,. meine Daten. Wenn ich sie plotze, ist die Kurve gezackt. Ich möchte die Kurve glätten und die beiden scharfen Ecken bewahren. Dies ist eine Auftragung der Rohdaten. Ich habe versucht, mit Tiefpassfilter für eine Woche, aber die Kurve ist immer noch nicht sehr gut. Meine Kurve hat viele Zickzacke. Das folgende ist meine Tiefpaßfilterfunktion. Nachdem ich den obigen Code ausgewertet habe, kann ich die drei Teile der Zickzackkurve separat glätten. Dann kombiniere ich sie. Wie ich schon sagte, die Kurve noch nicht gut genug. Einige Teile sind unangemessen geändert Was ich will, ist so etwas wie dieses, das durch eine Zeichnung erhalten wurde :). Ich möchte nur einige Mathematica Plot Tricks oder einen anderen Ansatz, die mir die glatte Kurve Ich suche zu verwenden. Fragte Okt 10 14 am 13:04 Nur einen erweiterten Kommentar zu starten. Ill versuchen, Follow-up mit einigen Code später heute oder über das Wochenende. Das klingt nach einem perfekten Job für einen Laguerre-Filter und höchstwahrscheinlich ein adaptiver, z. B. Laguerre Filter Eine Einführung. Sie können viele Informationen auf diesem online finden. Der Laguerre Filter glättet einen Datensatz basierend auf Laguerre-Polynomen. Sein erster Begriff, ein Exponential Moving Average, gefolgt von bestimmten Feedback-Begriffe. Die Glättung wird durch einen Alpha-Faktor gesteuert (Alpha für den Exponential Moving Average) und dämpft die weiteren Begriffe. Alpha kann von 1 bis zu den Daten fast genau auf 0 für eine sehr langsame Antwort. Das Ergebnis ergibt den gewichteten Durchschnitt der vergangenen Werte. Ein adaptives Laguerre-Filter führt einen variablen Alpha-Faktor ein, basierend darauf, wie gut der Filter die vergangenen N-Werte verfolgt. Dies sollte dem Filter ermöglichen, den Daten sehr genau zu folgen, während er den Charakter über die Spannweite der x-Achse verändert. Mathematicas LaguerreL-Funktion kann dies ganz einfach. Aus der Dokumentation: Ill versuchen, einige Code später Post. Hallo, Jagra Vielen Dank für Ihre interessante Ich werde es auch versuchen Ich denke, dass MovingAverage diese Arbeit perfekt tun kann, wenn wir das Gewicht kontrollieren können, um den Durchschnitt an der oszillierenden Teil zu tun und folgen Sie meiner Kurve in der Nähe Die beiden Inversionspunkte. Wie Sie sehen können, mit meinem LowpassFilter oder kale39s GaussianFilter. Gibt es eine unangemessene Änderung im rechten Teil der Kurve, wo die ursprüngliche Kurve glatt oder gut genug ist. Ndash kann man mit GaussianFilter etwas anfangen: Zuerst eine Filterfunktion: Diese Funktion wendet einen Gaußschen Filter auf alle Daten an, die größer als ein bestimmter y-Wert sind. Wir können es wie folgt verwenden: Um mit den Werten zu spielen, können wir ein einfaches Manipulat-Programm aufbauen: Ich denke, der WienerFilter funktioniert besser: beantwortet Okt 10 14 am 13:52 Thanks kale Wie Sie sehen können, mit meinem LowpassFilter oder Ihrem GaussianFilter. Gibt es sowohl eine unangemessene Änderung im rechten Teil der Kurve, wo die ursprüngliche Kurve glatt oder gut genug ist. Ich finde dein WienerFilter ist relativ gut. Aber wir können es noch verbessern. Könnten Sie pls Post Ihre WienerFilter-Code ndash kann Oct 10 14 am 14:21 Ixy Ersetzen Sie einfach GaussianFilter mit WeinerFilter. Ndash kale 10. Oktober um 14:22 Uhr Ihre Antwort 2017 Stack Exchange, Inc


Comments