В этом примере показано, как регуляризовать нерегулярно дискретизированные данные для получения постоянного периода времени между измерениями. Вы обновляете временные метки данных, считанных из канала ThingSpeak™, чтобы удалить неравномерность, а затем записываете данные в канал. Изменения временных меток в измеренных данных, введенные из-за задержек в сети или сброса аппаратных средств, могут повлиять на алгоритмы предварительной обработки данных и анализа данных. Многие алгоритмы требуют регулярной выборки данных для правильной работы.
Канал ThingSpeak 12397 содержит данные метеостанции MathWorks ®, расположенной в Натике, штат Массачусетс. Данные собираются один раз в минуту. Поле 4 канала содержит данные о температуре воздуха. Для проверки нерегулярно отобранных данных считывайте данные о температуре воздуха из канала 12397 с помощью thingSpeakRead функция.
data = thingSpeakRead(12397,'NumMin',60,'Fields',4,'outputFormat','timetable');
Данные за последние 60 минут, считанные с канала 12397, сохраняются в виде расписания. Использовать isregular функция для проверки того, регулярно ли производится выборка данных канала. Если данные дискретизируются нерегулярно, генерируют вектор времени с регулярным интервалом для интересующего периода времени. Создание нового вектора времени с помощью linspace с startTime, stopTimeи количество измерений.
regularFlag = isregular(data,'Time'); if ~regularFlag startTime = data.Timestamps(1); stopTime = data.Timestamps(end); newTimeVector = linspace(startTime,stopTime,height(data)); data.Timestamps = newTimeVector; end
Отправка обработанных данных в канал ThingSpeak с помощью thingSpeakWrite функция.
% Change the channelID and the writeAPIKey to send data to your channel. channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,data,'WriteKey',writeAPIKey);