Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l’originale in inglese.

Rimuovi e visualizza i valori anomali nei tuoi dati

Questo esempio mostra come rilevare e rimuovere i 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 smussare 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 ciascun lato di ciascun campione nella finestra di misurazione. Questa impostazione consente di disporre di dati sufficienti per decidere se ogni punto è un valore anomalo. Poiché i dati sono dinamici, i risultati potrebbero variare a seconda delle condizioni meteorologiche attuali. Specificare che il numero di deviazioni standard sia 2. Se un punto dati differisce dalla mediana locale per un numero superiore a questo, viene sostituito con il valore della mediana locale.

windowSize = 6;
numMedians = 2;
[filteredData,outliers]=hampel(data.WindSpeedmph,windowSize,numMedians);

Visualizza i dati

Rappresenta graficamente i dati originali e quelli filtrati. Mostra i valori anomali 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. Modifica channelID e writeAPIKey per inviare dati al tuo canale.

channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID,sum(outliers),'WriteKey',writeAPIKey);

Vedi anche

Funzioni