Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

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

(MATLAB) | (MATLAB) | (MATLAB)