Regularisieren unregelmäßig abgetasteter Daten
Dieses Beispiel zeigt, wie unregelmäßig abgetastete Daten reguliert werden, um einen konstanten Zeitraum zwischen den Messungen zu gewährleisten. Sie aktualisieren Zeitstempel von Daten, die aus einem ThingSpeak ™-Kanal gelesen werden, um Unregelmäßigkeiten zu beseitigen, und schreiben die Daten dann in einen Kanal. Zeitstempelabweichungen in Messdaten, die durch Netzwerklatenzen oder Hardware-Resets entstehen, können die Datenvorverarbeitung und die Algorithmen zur Datenanalyse beeinträchtigen. Viele Algorithmen benötigen regelmäßig abgetastete Daten, um korrekt zu funktionieren.
Daten vom Wetterstationskanal lesen
ThingSpeak-Kanal 12397 enthält Daten von der MathWorks ®-Wetterstation in Natick, Massachusetts. Die Daten werden einmal pro Minute erfasst. Feld 4 des Kanals enthält Daten zur Lufttemperatur. Um zu prüfen, ob die Daten unregelmäßig abgetastet wurden, lesen Sie die Lufttemperaturdaten aus Kanal 12397 mit der Funktion thingSpeakRead.
data = thingSpeakRead(12397,'NumMin',60,'Fields',4,'outputFormat','timetable');
Überprüfen Sie, ob die Daten unregelmäßig abgetastet wurden
Die aus Kanal 12397 ausgelesenen Daten der letzten 60 Minuten werden als Timetable gespeichert. Verwenden Sie die Funktion isregular, um zu überprüfen, ob die Kanaldaten regelmäßig abgetastet werden. Wenn die Daten unregelmäßig abgetastet werden, generieren Sie einen regelmäßig verteilten Zeitvektor für den betreffenden Zeitraum. Generieren Sie einen neuen Zeitvektor mit linspace mit startTime, stopTime und der Anzahl der Messungen.
regularFlag = isregular(data,'Time'); if ~regularFlag startTime = data.Timestamps(1); stopTime = data.Timestamps(end); newTimeVector = linspace(startTime,stopTime,height(data)); data.Timestamps = newTimeVector; end
Daten an ThingSpeak senden
Senden Sie die verarbeiteten Daten mithilfe der Funktion thingSpeakWrite an einen ThingSpeak-Kanal.
% Change the channelID and the writeAPIKey to send data to your channel. channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,data,'WriteKey',writeAPIKey);
Siehe auch
thingSpeakRead (MATLAB) | thingSpeakWrite (MATLAB) | linspace (MATLAB)