Contenuto principale

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

Regolarizzare i dati campionati in modo irregolare

Questo esempio mostra come regolarizzare dati campionati in modo irregolare per avere un intervallo di tempo costante tra le misurazioni. Si aggiornano i timestamp dei dati letti da un canale ThingSpeak ™ per rimuovere le irregolarità, quindi si scrivono i dati su un canale. Le variazioni di timestamp nei dati misurati introdotte a causa di latenze di rete o ripristini hardware possono influire sugli algoritmi di pre-elaborazione e analisi dei dati. Molti algoritmi necessitano di dati campionati regolarmente per funzionare correttamente.

Leggi i dati dal canale della stazione meteorologica

Il canale 12397 di ThingSpeak contiene dati provenienti dalla stazione meteorologica MathWorks ®, situata a Natick, Massachusetts. I dati vengono raccolti una volta al minuto. Il campo 4 del canale contiene i dati sulla temperatura dell'aria. Per verificare la presenza di dati campionati in modo irregolare, leggere i dati sulla temperatura dell'aria dal canale 12397 utilizzando la funzione thingSpeakRead.

data = thingSpeakRead(12397,'NumMin',60,'Fields',4,'outputFormat','timetable');

Controllare i dati campionati in modo irregolare

I dati degli ultimi 60 minuti letti dal canale 12397 vengono memorizzati come orario. Utilizzare la funzione isregular per verificare se i dati del canale vengono campionati regolarmente. Se i dati vengono campionati in modo irregolare, generare un vettore temporale regolarmente distanziato per il periodo di tempo di interesse. Genera un nuovo vettore temporale utilizzando linspace con startTime, stopTime e il numero di misurazioni.

regularFlag = isregular(data,'Time');

if ~regularFlag
    startTime = data.Timestamps(1);
    stopTime  = data.Timestamps(end);
    newTimeVector = linspace(startTime,stopTime,height(data)); 
    data.Timestamps = newTimeVector;
end

Invia dati a ThingSpeak

Inviare i dati elaborati a un canale ThingSpeak utilizzando la funzione thingSpeakWrite.

% Change the channelID and the writeAPIKey to send data to your channel.
channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID,data,'WriteKey',writeAPIKey);

Vedi anche

(MATLAB) | (MATLAB) | (MATLAB)