Main Content

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

Visualisez les données directionnelles avec Compass Plot

Cet exemple illustre les calculs matriciels dans MATLAB et l'utilisation d'un compas dans une application de visualisation MATLAB pour afficher la distribution directionnelle. Dans l'exemple, comme point de départ, vous utilisez l'un des modèles de code fournis par les applications MATLAB Analysis et MATLAB Visualizations dans ThingSpeak .

ThingSpeak™ channel 12397 contient des données météorologiques provenant d'une station météo située au sommet d'un parking sur le campus MathWorks à Natick, Massachusetts. Le champ 1 contient la mesure de la vitesse du vent.

Créer une visualisation MATLAB à partir du code modèle

Pour créer une visualisation de tracé de boussole d'un ensemble de données à partir d'un canal ThingSpeak , vous pouvez créer un script MATLAB à l'aide d'un modèle de code fourni.

Allez dans l'onglet Applications et sélectionnez Visualisations MATLAB . Cliquez sur Nouveau , sélectionnez Visualiser les données directionnelles avec le tracé de la boussole et cliquez sur Créer .

Visualisez vos données

ThingSpeak remplit le champ MATLAB Code avec le code modèle pour lire les données, puis générer le graphique en aires.

1) Définissez les variables pour communiquer avec ThingSpeak. Le canal de la station météo est public, vous n'avez donc pas besoin d'ajouter la clé d'API en lecture. Si vous lisez depuis votre propre canal, vous pouvez modifier ces valeurs.

readChannelID = 12397;
WindDirFieldID = 1;
WindSpeedFieldID = 2;
readAPIKey = '';

2) Utilisez thingSpeakRead pour lire 60 points de données de direction du vent à partir du champ 1. Lire les données de vitesse du vent du champ 2.

windDir = thingSpeakRead(readChannelID,'Fields',WindDirFieldID,'NumPoints',60,...
'ReadKey',readAPIKey);

windSpeed = thingSpeakRead(readChannelID,'Fields',WindSpeedFieldID,'NumPoints',60,...
'ReadKey',readAPIKey);

3) Convertissez la direction du vent de degrés en radians et déplacez la direction pour l'aligner avec le nord. Ces équations fonctionnent sur chaque élément du tableau lu à partir de ThingSpeak.

rad = windDir*2*pi/360;
rad = rad+pi/2;

4) Convertissez les mesures du vent en coordonnées cartésiennes pour plus de cohérence avec les entrées du tracé compass. Vous pouvez modifier le code du modèle pour l'adapter à votre application. Par exemple, éditez le code pour changer le nombre de points à lire avec thingSpeakRead.

u = cos(rad) .* windSpeed; 
v = sin(rad) .* windSpeed; 
compass(u,v);

5) Appuyez sur Enregistrer et exécuter pour générer le tracé. Le tracé de la boussole est généré à partir de données en temps réel, votre visualisation est donc différente de ce tracé. Le graphique montre la distribution directionnelle et la force des mesures récentes du vent.

6) Vous pouvez éventuellement ajouter des visualisations enregistrées à votre canal. Dans Paramètres d'affichage , utilisez le signe plus à côté de Ajouter/Modifier cette visualisation à un canal pour développer la liste des canaux.

Cochez la case du canal auquel vous souhaitez ajouter la visualisation. Pour ajouter des visualisations privées, sélectionnez  Vue privée . Pour partager l'URL et ajouter la visualisation à la Vue publique , cliquez sur Créer une URL publique . Pour mettre à jour vos sélections, cliquez sur  Enregistrer les paramètres d'affichage .

Afficher la moyenne pondérée des mesures du vent

Vous pouvez comparer plusieurs sorties sur le même tracé avec les visualisations MATLAB. Par exemple, vous pouvez ajouter une flèche indiquant la direction moyenne pondérée.

1) Calculez la moyenne pondérée.

aveDir = sum(rad.*windSpeed)/sum(windSpeed);

2) Convertissez les directions du vent mesurées en coordonnées cartésiennes. Utilisez hold on pour conserver les données sur le même tracé, puis générez le tracé. Utilisez le type de ligne 'ro-' pour distinguer la ligne moyenne des autres.

w = mean(u); 
z = mean(v); 

% Generate the original plot.
compass(u,v);
hold on
c = compass(w,z,'ro-');
c.LineWidth = 2;

Voir aussi

Fonctions

Exemples associés

En savoir plus