Main Content

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

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