Main Content

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

Rimuovi i valori anomali dai dati sulla velocità del vento

Questo esempio mostra come leggere i dati da un canale pubblico, modificare i dati e visualizzare gli elementi selezionati. Nell'esempio, modifichi uno dei modelli di codice forniti dalle app MATLAB Analysis e MATLAB Visualizations. L'esempio utilizza i dati di ThingSpeak channel 12397, che raccoglie dati meteorologici da una stazione meteorologica basata su Arduino® a Natick, Massachusetts.

Crea uno script di MATLAB Analysis dal codice modello

Per rilevare e rimuovere valori anomali nei dati sulla velocità del vento dalla stazione meteorologica Natick, puoi scrivere uno script MATLAB® utilizzando un modello di codice.

Vai alla scheda App in ThingSpeak e seleziona MATLAB Analysis. Fare clic su Nuovo, selezionare Rimuovi valori anomali dai dati sulla velocità del vento e fare clic su Crea.

Analizza i tuoi dati

Il campo Codice MATLAB è precompilato con il codice per rilevare e rimuovere valori anomali dai dati sulla velocità del vento nelle ultime sei ore.

1) Impostare le variabili per comunicare con ThingSpeak. readChannelID è l'ID del canale pubblico che raccoglie i dati dalla stazione meteorologica. windSpeedFieldID è il campo nel canale che contiene i valori della velocità del vento. Assegna un valore a readAPIkey solo se stai leggendo dati da un canale privato. La stazione meteorologica è pubblica, quindi per questo esempio non impostare readAPIkey.

readChannelID = 12397;
windSpeedFieldID = 2;
readAPIKey = '';

2) Leggere i valori della velocità del vento e i timestamp delle ultime sei ore utilizzando la funzione thingSpeakRead .

[windSpeed,timeStamp] = thingSpeakRead(readChannelID,'fields',windSpeedFieldID,'NumMinutes',360,'ReadKey',readAPIKey);

3) Verificare la presenza di valori anomali nei dati sulla velocità del vento utilizzando la funzione MATLAB isoutlier . Con le impostazioni predefinite, questa funzione calcola se un valore si trova a più di tre deviazioni assolute mediane in scala dalla mediana del set di dati di input. È possibile modificare gli argomenti di input per personalizzare i risultati anomali. Identificare gli indici dei punti dati anomali e gli indici dei punti dati puliti. Utilizzare questi indici per selezionare punti dati e timestamp corrispondenti ai dati anomali e ai dati puliti.

outlierDataIndex = isoutlier(windSpeed);
cleanDataIndex = ~outlierDataIndex;

outlierData = windSpeed(outlierDataIndex);
cleanData = windSpeed(cleanDataIndex);

outlierTimeStamps = timeStamp(outlierDataIndex);
cleanTimeStamps = timeStamp(cleanDataIndex);

4) Creare orari con dati anomali e dati puliti e visualizzare il risultato dei punti dati anomali.

outlierDataTable = timetable(outlierTimeStamps,outlierData);
cleanDataTable = timetable(cleanTimeStamps,cleanData);

display(outlierDataTable,'Outlier data');
  3×1 timetable

     outlierTimeStamps      outlierData
    ____________________    ___________

    03-Jun-2019 10:20:54         17    
    03-Jun-2019 13:26:14       16.6    
    03-Jun-2019 13:39:33       16.8    

Esegui il codice facendo clic su Salva ed esegui. Nel campo Output vengono visualizzati i risultati.

Scrivi dati su un canale

1) Memorizza i risultati dei dati puliti scrivendoli su un canale privato. Per creare un canale ThingSpeak , vai alla scheda Canali e seleziona I miei canali. Fare clic su Nuovo canale. Seleziona la casella di controllo corrispondente e inserisci questi valori di impostazione del canale:

  • Nome — Cleaned Wind Speed Measurements

  • Campo 1 — Wind speed (mph)

Fare clic su Salva canale.

2) Nel campo Codice MATLAB , imposta le variabili per la scrittura sul tuo canale privato. Sostituisci i valori indicati per writeChannelID e writeAPIKey con i tuoi valori. Puoi trovare l'ID del canale e la chiave API nel pannello Informazioni sul canale sul lato destro della pagina.

% Replace with the ID of the channel to write data to.
writeChannelID = 17504;
% Enter the write API key between the ''.
writeAPIKey = '23ZLGOBBU9TWHG2H';

3) Scrivi le letture pulite della velocità del vento con i rispettivi timestamp sul tuo canale.

thingSpeakWrite(writeChannelID,cleanData,'timestamp',cleanTimeStamps,'Writekey',writeAPIKey);

4) Esegui il codice facendo clic su Salva ed esegui. Il grafico nel tuo canale ThingSpeak è popolato con dati di serie temporali per la velocità del vento senza i valori anomali calcolati. Puoi accedere al tuo canale facendo clic sul collegamento del canale nel pannello Informazioni sul canale sul lato destro della pagina.

Per scaricare i tuoi dati in formato CSV, fai clic sul pulsante Esportazione dati o sulla scheda Importazione/esportazione dati. Per cancellare tutti i dati salvati nel tuo canale, fai clic sulla scheda Impostazioni canale.

Calcola la media mobile

È possibile aggiungere codice al modello per analizzare ulteriormente i dati sulla velocità del vento. Oltre a rimuovere i valori anomali, un altro metodo per livellare un set di dati è calcolare la media mobile. In questo approccio, la media di un gruppo di punti dati locali viene calcolata su una finestra scorrevole nell'intero set di dati. Utilizza la funzione MATLAB movmean con una finestra scorrevole di cinque minuti per livellare i dati sulla velocità del vento. Questa sezione non è inclusa nel modello di codice. Puoi includerlo nel tuo codice dopo aver chiamato thingSpeakRead.

smoothData = movmean(windSpeed,minutes(5),'SamplePoints',timeStamp);

Per salvare i tuoi nuovi dati, scrivili sul tuo canale ThingSpeak . Commenta la funzione thingSpeakWrite esistente e salva i nuovi dati delle serie temporali livellate sul tuo canale.

thingSpeakWrite(writeChannelID,smoothData,'timestamp',timeStamp,'Writekey',writeAPIKey);

Per aggiornare i risultati, fai nuovamente clic su Salva ed esegui.

Vedi anche

Funzioni

Esempi correlati

Ulteriori informazioni