Rimuovi e visualizza i valori anomali nei tuoi dati
Questo esempio mostra come rilevare e rimuovere valori anomali nei dati del canale ThingSpeak™ utilizzando un filtro Hampel. Questo filtro è strettamente correlato a un filtro mediano e aiuta a rimuovere i valori anomali da un segnale senza livellare eccessivamente i dati.
Leggi i dati
Leggere la velocità del vento memorizzata nel canale 22641 utilizzando la funzione thingSpeakRead
.
data = thingSpeakRead(12397,'NumPoints',80,'Fields',2,'outputFormat','table');
Rimuovi valori anomali
Rimuovere i valori anomali nei dati grezzi applicando la funzione Hampel
. Specificare la dimensione della finestra su 6, ovvero circa tre minuti di dati su entrambi i lati di ciascun campione nella finestra di misurazione. Questa impostazione consente di disporre di dati sufficienti per decidere se ciascun punto è un valore anomalo. Poiché i dati sono dinamici, i risultati possono variare a seconda del tempo attuale. Specificare il numero di deviazioni standard che deve essere 2. Se un punto dati differisce dalla mediana locale di più di questo numero, viene sostituito con il valore mediano locale.
windowSize = 6; numMedians = 2; [filteredData,outliers]=hampel(data.WindSpeedmph,windowSize,numMedians);
Visualizza i dati
Tracciare i dati originali e i dati filtrati. Mostra gli outlier rilevati e rimossi.
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
Scrivi dati su ThingSpeak
Invia il numero di valori anomali rilevati a un canale ThingSpeak utilizzando la funzione thingSpeakWrite
. Cambia channelID
e writeAPIKey
per inviare dati al tuo canale.
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,sum(outliers),'WriteKey',writeAPIKey);
Vedi anche
Funzioni
thingSpeakRead
|hampel
(Signal Processing Toolbox)