Regolarizzare i dati campionati in modo irregolare
Questo esempio mostra come regolarizzare i dati campionati in modo irregolare per avere un periodo di tempo costante tra le misurazioni. Aggiorna i timestamp dei dati letti da un canale ThingSpeak™ per rimuovere le irregolarità, quindi scrivi i dati su un canale. Le variazioni del timestamp nei dati misurati introdotte a causa di latenze di rete o reimpostazioni hardware possono influenzare la preelaborazione dei dati e gli algoritmi di analisi dei dati. Molti algoritmi richiedono dati campionati regolarmente per funzionare correttamente.
Leggere i dati dal canale della stazione meteorologica
Il canale ThingSpeak 12397 contiene i dati della stazione meteorologica MathWorks® , situata a Natick, Massachusetts. I dati vengono raccolti una volta ogni 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 della 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 distanziato regolarmente 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
Invia i dati elaborati ad 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
thingSpeakRead
(MATLAB) | thingSpeakWrite
(MATLAB) | linspace
(MATLAB)