Régulariser les données échantillonnées de manière irrégulière
Cet exemple montre comment régulariser des données échantillonnées de manière irrégulière pour avoir une période de temps constante entre les mesures. Vous mettez à jour les horodatages des données lues à partir d'un canal ThingSpeak ™ pour supprimer les irrégularités, puis écrivez les données sur un canal. Les variations d'horodatage des données mesurées introduites en raison des latences du réseau ou des réinitialisations hardware peuvent affecter les algorithmes de prétraitement et d'analyse des données. De nombreux algorithmes nécessitent des données régulièrement échantillonnées pour fonctionner correctement.
Lire les données du canal de la station météo
Le canal ThingSpeak 12397 contient les données de la station météo MathWorks®, située à Natick, Massachusetts. Les données sont collectées une fois par minute. Le champ 4 du canal contient les données de température de l'air. Pour vérifier les données échantillonnées de manière irrégulière, lisez les données de température de l'air du canal 12397 à l'aide de la fonction thingSpeakRead
.
data = thingSpeakRead(12397,'NumMin',60,'Fields',4,'outputFormat','timetable');
Vérifier les données échantillonnées de manière irrégulière
Les données des 60 dernières minutes lues sur le canal 12397 sont stockées dans une timetable. Utilisez la fonction isregular
pour vérifier si les données du canal sont régulièrement échantillonnées. Si les données sont échantillonnées de manière irrégulière, générez un vecteur temporel régulièrement espacé pour la période d'intérêt. Générez un nouveau vecteur temporel en utilisant linspace
avec le startTime
, stopTime
et le nombre de mesures.
regularFlag = isregular(data,'Time'); if ~regularFlag startTime = data.Timestamps(1); stopTime = data.Timestamps(end); newTimeVector = linspace(startTime,stopTime,height(data)); data.Timestamps = newTimeVector; end
Envoyer des données à ThingSpeak
Envoyez les données traitées à un canal ThingSpeak à l'aide de la fonction thingSpeakWrite
.
% Change the channelID and the writeAPIKey to send data to your channel. channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,data,'WriteKey',writeAPIKey);
Voir aussi
thingSpeakRead
(MATLAB) | thingSpeakWrite
(MATLAB) | linspace
(MATLAB)