So glätten Sie verrauschte Datenkurven: Eine umfassende Anleitung und Lösung

Linda Hamilton
Freigeben: 2024-10-20 15:57:29
Original
103 Leute haben es durchsucht

How to Smooth Noisy Data Curves: A Comprehensive Guide and Solution

Glättung von Kurven für verrauschte Daten: Ein umfassender Leitfaden

Beim Umgang mit Datensätzen, die Rauschen oder Unregelmäßigkeiten aufweisen, ist es entscheidend, effektive Techniken zu finden um diese Abweichungen zu glätten und den zugrunde liegenden Trend zu extrahieren. Dieser Artikel befasst sich mit verschiedenen Ansätzen zur Kurvenglättung und geht dabei auf die besondere Herausforderung des Umgangs mit Rauschen ein.

Univariate Spline-Funktion

Die UnivariateSpline-Funktion von Scipy ist eine gängige Option für Kurvenglättung. Es kann jedoch sein, dass Rauschen nicht immer effektiv verarbeitet wird, da es dazu neigt, die Daten zu überanpassen und zusätzliches Rauschen zu erzeugen.

Gleitender Durchschnitt

Ein gleitender Durchschnitt-Ansatz kann ebenfalls verwendet werden Dabei wird der Durchschnitt einer Teilmenge von Datenpunkten berechnet und dieser als geglätteter Wert verwendet. Die Auswahl einer geeigneten Verzögerung für den gleitenden Durchschnitt ist jedoch von entscheidender Bedeutung, um eine übermäßige Glättung oder Unteranpassung zu vermeiden.

Savitzky-Golay-Filter: Eine robuste Lösung

Der Savitzky-Golay-Filter erweist sich als robuste Lösung zur Glättung verrauschter Kurven. Es verwendet einen Ansatz der kleinsten Quadrate, um ein Polynom an ein kleines Fenster von Datenpunkten anzupassen. Durch Verschieben des Fensters und Wiederholen des Vorgangs wird jeder Punkt im Verhältnis zu seinen Nachbarn optimal angepasst.

Implementierung mit SciPy

Um den Savitzky-Golay-Filter in Python zu implementieren, Man kann die Funktion savitzky_golay() aus dem Kochbuchbeispiel oder die Funktion savgol_filter() aus der SciPy-Bibliothek verwenden. Der folgende Code zeigt, wie die Funktion savgol_filter() zum Glätten eines verrauschten Sinusdatensatzes verwendet wird:

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter

# Generate noisy sinusoidal data
x = np.linspace(0,2*np.pi,100)
y = np.sin(x) + np.random.random(100) * 0.2

# Apply Savitzky-Golay filter
yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3

# Plot original and smoothed data
plt.plot(x,y)
plt.plot(x,yhat, color='red')
plt.show()
Nach dem Login kopieren

Durch die Anwendung des Savitzky-Golay-Filters wird die verrauschte Sinuskurve effektiv geglättet, während der Gesamttrend erhalten bleibt. Dies zeigt die Wirksamkeit des Filters bei der Reduzierung von Rauschen und der Extraktion des zugrunde liegenden Signals.

Das obige ist der detaillierte Inhalt vonSo glätten Sie verrauschte Datenkurven: Eine umfassende Anleitung und Lösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!