Main Content

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

Supprimer les valeurs aberrantes des données de vitesse du vent

Cet exemple montre comment lire les données d'un canal public , modifier les données et afficher les éléments sélectionnés. Dans l'exemple, vous modifiez l'un des modèles de code fournis par les applications MATLAB Analysis et MATLAB Visualizations. L'exemple utilise les données de ThingSpeak channel 12397, qui collecte des données météorologiques à partir d'une station météo basée sur Arduino® à Natick, Massachusetts.

Créer un script d'analyse MATLAB à partir du code modèle

Pour détecter et supprimer les valeurs aberrantes dans les données de vitesse du vent de la station météo Natick, vous pouvez écrire un script MATLAB® à l'aide d'un modèle de code.

Allez dans l'onglet Applications dans ThingSpeak et sélectionnez MATLAB Analysis . Cliquez sur Nouveau , sélectionnez Supprimer les valeurs aberrantes des données de vitesse du vent et cliquez sur Créer .

 Analysez vos données 

Le champ  Code MATLAB  est prérempli avec du code pour détecter et supprimer les valeurs aberrantes des données de vitesse du vent au cours des six dernières heures.

1) Définissez les variables pour communiquer avec ThingSpeak. readChannelID est l'ID de canal du canal public qui collecte les données de la station météo. windSpeedFieldID est le champ du canal qui contient les valeurs de vitesse du vent. Attribuez une valeur à readAPIkey uniquement si vous lisez des données à partir d'un canal privé . La station météo est publique, donc pour cet exemple, ne définissez pas readAPIkey.

readChannelID = 12397;
windSpeedFieldID = 2;
readAPIKey = '';

2) Lisez les valeurs de vitesse du vent et les horodatages des six dernières heures à l'aide de la fonction thingSpeakRead.

[windSpeed,timeStamp] = thingSpeakRead(readChannelID,'fields',windSpeedFieldID,'NumMinutes',360,'ReadKey',readAPIKey);

3) Recherchez les valeurs aberrantes dans les données de vitesse du vent à l'aide de la fonction MATLAB isoutlier. Avec les paramètres par défaut, cette fonction calcule si une valeur est à plus de trois écarts absolus médians mis à l'échelle par rapport à la médiane de l' jeu de données d'entrée. Vous pouvez ajuster les arguments d'entrée pour personnaliser vos résultats aberrants. Identifiez les indices des points de données aberrants et les indices des points de données propres. Utilisez ces indices pour sélectionner des points de données et des horodatages correspondant aux données aberrantes et aux données propres.

outlierDataIndex = isoutlier(windSpeed);
cleanDataIndex = ~outlierDataIndex;

outlierData = windSpeed(outlierDataIndex);
cleanData = windSpeed(cleanDataIndex);

outlierTimeStamps = timeStamp(outlierDataIndex);
cleanTimeStamps = timeStamp(cleanDataIndex);

4) Créez des horaires avec des données aberrantes et des données propres, et affichez le résultat des points de données aberrants.

outlierDataTable = timetable(outlierTimeStamps,outlierData);
cleanDataTable = timetable(cleanTimeStamps,cleanData);

display(outlierDataTable,'Outlier data');
  3×1 timetable

     outlierTimeStamps      outlierData
    ____________________    ___________

    03-Jun-2019 10:20:54         17    
    03-Jun-2019 13:26:14       16.6    
    03-Jun-2019 13:39:33       16.8    

Exécutez votre code en cliquant sur  Enregistrer et exécuter . Le champ  Sortie  affiche vos résultats.

Écrire des données sur un canal

1) Stockez vos résultats de données propres en les écrivant sur un canal privé. Pour créer une canal ThingSpeak , allez dans l'onglet  Canaux  et sélectionnez  Mes canaux . Cliquez sur Nouveau canal . Cochez la case correspondante et entrez ces valeurs de paramètre de canal :

  • Nom — Cleaned Wind Speed Measurements

  • Champ 1 — Wind speed (mph)

Cliquez sur  Enregistrer le canal .

2) Dans le champ MATLAB Code , définissez les variables d'écriture sur votre canal privé. Remplacez les valeurs données pour writeChannelID et writeAPIKey par vos valeurs. Vous pouvez trouver l'ID du canal et la clé d'API dans le panneau Informations sur le canal sur le côté droit de la page.

% Replace with the ID of the channel to write data to.
writeChannelID = 17504;
% Enter the write API key between the ''.
writeAPIKey = '23ZLGOBBU9TWHG2H';

3) Écrivez les lectures de la vitesse du vent propre avec leurs horodatages respectifs sur votre canal.

thingSpeakWrite(writeChannelID,cleanData,'timestamp',cleanTimeStamps,'Writekey',writeAPIKey);

4) Exécutez votre code en cliquant sur Enregistrer et exécuter . Le diagramme de votre canal ThingSpeak contient des données de séries chronologiques pour la vitesse du vent sans les valeurs aberrantes calculées . Vous pouvez accéder à votre canal en cliquant sur le lien du canal dans le panneau Informations sur le canal sur le côté droit de la page.

Pour télécharger vos données au format CSV, cliquez sur le bouton Exportation de données ou sur l'onglet Importation/Exportation de données . Pour effacer toutes les données enregistrées dans votre canal, cliquez sur l'onglet Paramètres du canal .

Calculer la moyenne mobile

Vous pouvez ajouter du code au modèle pour analyser plus en détail les données de vitesse du vent. Outre la suppression des valeurs aberrantes, une autre méthode de lissage d'un ensemble de données consiste à calculer la moyenne mobile. Dans cette approche, la moyenne d'un groupe de points de données locaux est calculée sur une fenêtre glissante sur l'ensemble de l' jeu de données. Utilisez la fonction MATLAB movmean avec une fenêtre glissante de cinq minutes pour lisser vos données de vitesse du vent. Cette section n'est pas incluse dans le modèle de code. Vous pouvez l'inclure dans votre code après avoir appelé thingSpeakRead.

smoothData = movmean(windSpeed,minutes(5),'SamplePoints',timeStamp);

Pour enregistrer vos nouvelles données, écrivez-les sur votre canal ThingSpeak . Commentez la fonction thingSpeakWrite existante et enregistrez les nouvelles données de séries chronologiques lissées sur votre canal.

thingSpeakWrite(writeChannelID,smoothData,'timestamp',timeStamp,'Writekey',writeAPIKey);

Pour mettre à jour vos résultats, cliquez à nouveau sur  Enregistrer et exécuter .

Voir aussi

Fonctions

Exemples associés

En savoir plus