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
thingSpeakRead (MATLAB) | thingSpeakWrite (MATLAB) | linspace (MATLAB)