Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um das englische Original zu sehen.

Visualisieren Sie Richtungsdaten mit dem Kompassdiagramm

Dieses Beispiel demonstriert Matrixberechnungen in MATLAB und die Verwendung eines Kompassdiagramms in einer MATLAB-Visualisierungs-App zur Darstellung der Richtungsverteilung. Im Beispiel verwenden Sie als Ausgangspunkt eine der Codevorlagen, die die Apps MATLAB Analysis und MATLAB Visualizations in ThingSpeak bereitstellen.

ThingSpeak ™ Kanal 12397 enthält Wetterdaten von einer Wetterstation auf einem Parkhaus auf dem MathWorks-Campus in Natick, Massachusetts. Feld 1 enthält die Windgeschwindigkeitsmessung.

Erstellen Sie eine MATLAB-Visualisierung aus Vorlagencode

Um eine Kompassdiagrammvisualisierung eines Datensatzes aus einem ThingSpeak-Kanal zu erstellen, können Sie mithilfe einer bereitgestellten Codevorlage ein MATLAB-Skript erstellen.

Gehen Sie zur Registerkarte Apps und wählen Sie MATLAB Visualizations aus. Klicken Sie auf New, wählen Sie Visualize directional data with compass plot und klicken Sie auf Create.

Visualisieren Sie Ihre Daten

ThingSpeak füllt das Feld MATLAB Code mit Vorlagencode, um die Daten zu lesen und dann das Flächendiagramm zu generieren.

1) Legen Sie die Variablen für die Kommunikation mit ThingSpeak fest. Der Kanal der Wetterstation ist öffentlich, Sie müssen daher den Read-API-Schlüssel nicht hinzufügen. Wenn Sie von Ihrem eigenen Kanal lesen, können Sie diese Werte ändern.

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

2) Verwenden Sie thingSpeakRead, um 60 Punkte Windrichtungsdaten aus Feld 1 zu lesen. Lesen Sie die Windgeschwindigkeitsdaten aus Feld 2 ab.

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

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

3) Konvertieren Sie die Windrichtung von Grad in Radiant und ändern Sie die Richtung, um sie nach Norden auszurichten. Diese Gleichungen wirken sich auf jedes Element im Array aus, das aus ThingSpeak gelesen wird.

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

4) Konvertieren Sie die Windmessungen in kartesische Koordinaten, um Konsistenz mit den Diagramm-Eingaben von compass zu gewährleisten. Sie können den Vorlagencode bearbeiten, damit er zu Ihrer Anwendung passt. Bearbeiten Sie beispielsweise den Code, um die Anzahl der zu lesenden Punkte mit thingSpeakRead zu ändern.

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

5) Drücken Sie Save and Run , um das Diagramm zu generieren. Das Kompassdiagramm wird aus Echtzeitdaten generiert, daher unterscheidet sich Ihre Visualisierung von diesem Diagramm. Die Grafik zeigt die Richtungsverteilung und Stärke der jüngsten Windmessungen.

6) Optional können Sie Ihrem Kanal gespeicherte Visualisierungen hinzufügen. Verwenden Sie in den Display Settings das Pluszeichen neben Add/Edit this Visualization to a Channel, um die Kanalliste zu erweitern.

Aktivieren Sie das Kontrollkästchen für den Kanal, zu dem Sie die Visualisierung hinzufügen möchten. Um private Visualisierungen hinzuzufügen, wählen Sie Private Ansicht. Um die URL freizugeben und die Visualisierung zur Öffentlichen Ansicht hinzuzufügen, klicken Sie auf Öffentliche URL erstellen. Um Ihre Auswahl zu aktualisieren, klicken Sie auf Save Display Settings.

Gewichteten Durchschnitt der Windmessungen anzeigen

Mit MATLAB Visualizations können Sie mehrere Ausgaben im selben Diagramm vergleichen. Sie können beispielsweise einen Pfeil hinzufügen, der die Richtung des gewichteten Durchschnitts angibt.

1) Berechnen Sie den gewichteten Durchschnitt.

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

2) Konvertieren Sie die gemessenen Windrichtungen in kartesische Koordinaten. Verwenden Sie hold on, um die Daten auf demselben Diagramm zu behalten, und generieren Sie dann das Diagramm. Verwenden Sie den Linientyp 'ro-', um die Durchschnittslinie von den anderen zu unterscheiden.

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

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

Siehe auch

Funktionen

Themen