Entfernen und Visualisieren von Ausreißern in Ihren Daten
Dieses Beispiel zeigt, wie Sie mithilfe eines Hampel-Filters Ausreißer in Ihren ThingSpeak ™-Kanaldaten erkennen und entfernen. Dieser Filter ist eng mit einem Medianfilter verwandt und hilft, Ausreißer aus einem Signal zu entfernen, ohne die Daten übermäßig zu glätten.
Daten lesen
Lesen Sie die im Kanal 22641 gespeicherte Windgeschwindigkeit mit der Funktion thingSpeakRead.
data = thingSpeakRead(12397,'NumPoints',80,'Fields',2,'outputFormat','table');
Ausreißer entfernen
Entfernen Sie Ausreißer in den Rohdaten, indem Sie die Funktion Hampel anwenden. Geben Sie die Fenstergröße mit 6 an, also etwa drei Minuten Daten auf beiden Seiten jeder Probe im Messfenster. Diese Einstellung ermöglicht es, dass genügend Daten vorhanden sind, um zu entscheiden, ob jeder Punkt ein Ausreißer ist. Da die Daten dynamisch sind, können Ihre Ergebnisse je nach aktuellem Wetter variieren. Geben Sie die Anzahl der Standardabweichungen auf 2 an. Wenn ein Datenpunkt um mehr als diese Zahl vom lokalen Median abweicht, wird er durch den lokalen Medianwert ersetzt.
windowSize = 6; numMedians = 2; [filteredData,outliers]=hampel(data.WindSpeedmph,windowSize,numMedians);
Daten visualisieren
Stellen Sie die Originaldaten und die gefilterten Daten grafisch dar. Zeigen Sie die erkannten und entfernten Ausreißer an.
plot(data.Timestamps,data.WindSpeedmph); hold plot(data.Timestamps,filteredData); plot(data.Timestamps(outliers),data.WindSpeedmph(outliers),'Marker','Square','Linestyle','None','Color','black'); ylabel('Wind Speed (mph)'); legend('Orginal Data', 'Filtered Data','Outliers');
Current plot held

Daten in ThingSpeak schreiben
Senden Sie die Anzahl der erkannten Ausreißer mithilfe der Funktion thingSpeakWrite an einen ThingSpeak-Kanal. Ändern Sie channelID und writeAPIKey, um Daten an Ihren Kanal zu senden.
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,sum(outliers),'WriteKey',writeAPIKey);
Siehe auch
Funktionen
thingSpeakRead|hampel(Signal Processing Toolbox)