Main Content

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Visualisieren Sie Richtungsdaten mit Compass Plot

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™ channel 12397 enthält Wetterdaten von einer Wetterstation auf dem Dach eines Parkhauses auf dem MathWorks Campus in Natick, Massachusetts. Feld 1 enthält die Windgeschwindigkeitsmessung.

Erstellen Sie eine MATLAB Visualisierung aus Vorlagencode

Um eine Kompassplot-Visualisierung 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 Visualisierungen“. Klicken Sie auf „Neu“, wählen Sie „Richtungsdaten mit Kompassdiagramm visualisieren“ und klicken Sie auf „Erstellen“.

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, sodass Sie den gelesenen API-Schlüssel nicht hinzufügen müssen. 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 der 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) Wandeln Sie die Windrichtung von Grad in Bogenmaß um und ändern Sie die Richtung, um sie an Nord auszurichten. Diese Gleichungen gelten für jedes Element im aus ThingSpeak gelesenen Array.

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

4) Konvertieren Sie die Windmessungen in kartesische Koordinaten, um die Konsistenz mit den compass- Ploteingaben zu gewährleisten. Sie können den Vorlagencode bearbeiten, um ihn an Ihre Anwendung anzupassen. 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) Klicken Sie auf „Speichern und ausführen“, um den Plot zu erstellen. Das Kompassdiagramm wird aus Echtzeitdaten generiert, daher unterscheidet sich Ihre Visualisierung von diesem Diagramm. Das Diagramm zeigt die Richtungsverteilung und Stärke der letzten Windmessungen.

6) Optional können Sie gespeicherte Visualisierungen zu Ihrem Kanal hinzufügen. Verwenden Sie in den „Anzeigeeinstellungen“ das Pluszeichen neben „Diese Visualisierung einem Kanal hinzufügen/bearbeiten“, um die Kanalliste zu erweitern.

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

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 anzeigt.

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 im gleichen Diagramm beizubehalten, 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

Verwandte Beispiele

Mehr über