Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l’originale in inglese.

Visualizza i dati direzionali con il grafico della bussola

Questo esempio illustra i calcoli delle matrici in MATLAB e l'uso di un grafico a bussola in un'app di visualizzazione MATLAB per mostrare la distribuzione direzionale. Nell'esempio, come punto di partenza, si utilizza uno dei modelli di codice forniti dalle app MATLAB Analysis e MATLAB Visualizations in ThingSpeak.

Il canale 12397 di ThingSpeak ™ contiene dati meteorologici provenienti da una stazione meteorologica situata in cima a un parcheggio nel campus MathWorks a Natick, Massachusetts. Il campo 1 contiene la misurazione della velocità del vento.

Crea una visualizzazione MATLAB dal codice del modello

Per creare una visualizzazione del grafico a bussola di un set di dati da un canale ThingSpeak, è possibile creare uno script MATLAB utilizzando un modello di codice fornito.

Vai alla scheda App e seleziona Visualizzazioni MATLAB. Fare clic su Nuovo, selezionare Visualizza dati direzionali con grafico bussola e fare clic su Crea.

Visualizza i tuoi dati

ThingSpeak popola il campo MATLAB Codice con il codice modello per leggere i dati e quindi generare il grafico dell'area.

1) Impostare le variabili per comunicare con ThingSpeak. Il canale della stazione meteorologica è pubblico, quindi non è necessario aggiungere la chiave API di lettura. Se stai leggendo dal tuo canale, puoi modificare questi valori.

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

2) Utilizzare thingSpeakRead per leggere 60 punti di dati sulla direzione del vento dal campo 1. Leggere i dati sulla velocità del vento dal campo 2.

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

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

3) Convertire la direzione del vento da gradi a radianti e spostare la direzione per allinearla con il nord. Queste equazioni operano su ogni elemento dell'array letto da ThingSpeak.

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

4) Convertire le misurazioni del vento in coordinate cartesiane per coerenza con gli input del grafico compass. Puoi modificare il codice del modello per adattarlo alla tua applicazione. Ad esempio, modifica il codice per cambiare il numero di punti da leggere con thingSpeakRead.

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

5) Premere Salva ed esegui per generare il grafico. Il grafico della bussola viene generato da dati in tempo reale, quindi la visualizzazione è diversa da questo grafico. Il grafico mostra la distribuzione direzionale e l'intensità delle recenti misurazioni del vento.

6) Facoltativamente, puoi aggiungere visualizzazioni salvate al tuo canale. In Impostazioni di visualizzazione, usa il segno più accanto a Aggiungi/modifica questa visualizzazione a un canale per espandere l'elenco dei canali.

Seleziona la casella di controllo per il canale a cui desideri aggiungere la visualizzazione. Per aggiungere visualizzazioni private, seleziona Visualizzazione privata. Per condividere l'URL e aggiungere la visualizzazione alla Visualizzazione pubblica, fare clic su Crea un URL pubblico. Per aggiornare le selezioni, fare clic su Salva impostazioni di visualizzazione.

Mostra la media ponderata delle misurazioni del vento

È possibile confrontare più output sullo stesso grafico con le visualizzazioni MATLAB. Ad esempio, è possibile aggiungere una freccia che indica la direzione della media ponderata.

1) Calcola la media ponderata.

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

2) Convertire le direzioni del vento misurate in coordinate cartesiane. Utilizzare hold on per mantenere i dati sullo stesso grafico e quindi generare il grafico. Utilizzare il tipo di linea 'ro-' per distinguere la linea media dalle altre.

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

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

Vedi anche

Funzioni

Argomenti