このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
コンパスプロットによる方向データの視覚化
この例では、 MATLABでの行列計算と、 MATLAB Visualizationsアプリでのコンパス プロットを使用して方向分布を表示する方法を示します。この例では、開始点として、 ThingSpeakのMATLAB AnalysisアプリとMATLAB Visualizationsアプリが提供するコード テンプレートの 1 つを使用します。
ThingSpeak™ channel 12397 には、マサチューセッツ州ネイティックのMathWorksキャンパスの駐車場の上にある気象観測所からの気象データが含まれています。フィールド 1 には風速の測定値が含まれます。
«テンプレート コードからMATLABビジュアライゼーションを作成する»
ThingSpeakチャネルからの一連のデータのコンパス プロット視覚化を作成するには、提供されているコード テンプレートを使用してMATLABスクリプトを作成できます。
[アプリ] タブに移動し、[MATLAB Visualizations] を選択します。「新規」をクリックし、「コンパスプロットで方向データを視覚化」を選択し、「作成」をクリックします。
データを視覚化する
ThingSpeak は、データを読み取って面積プロットを生成するためのテンプレート コードを「MATLABコード」「」フィールドに入力します。
1) ThingSpeakと通信するための変数を設定します。気象観測所のチャネルは公開されているため、読み取り API キーを追加する必要はありません。独自のチャネルから読み取る場合は、これらの値を変更できます。
readChannelID = 12397;
WindDirFieldID = 1;
WindSpeedFieldID = 2;
readAPIKey = '';
2) thingSpeakRead
を使用して、フィールド 1 から 60 ポイントの風向データを読み取ります。フィールド 2 から風速データを読み取ります。
windDir = thingSpeakRead(readChannelID,'Fields',WindDirFieldID,'NumPoints',60,... 'ReadKey',readAPIKey); windSpeed = thingSpeakRead(readChannelID,'Fields',WindSpeedFieldID,'NumPoints',60,... 'ReadKey',readAPIKey);
3) 風向を度からラジアンに変換し、北と一致するように方向をシフトします。これらの方程式は、 ThingSpeakから読み取られた配列内の各要素に作用します。
rad = windDir*2*pi/360; rad = rad+pi/2;
4) compass
プロット入力との一貫性を保つために、風の測定値をデカルト座標に変換します。テンプレート コードは用途に合わせて編集できます。たとえば、コードを編集して、 thingSpeakRead
で読み取るポイントの数を変更します。
u = cos(rad) .* windSpeed; v = sin(rad) .* windSpeed; compass(u,v);
5) «保存して実行»« »を押してプロットを生成します。コンパス プロットはリアルタイム データから生成されるため、実際の視覚化はこのプロットとは異なります。プロットは、最近の風の測定値の方向分布と強さを示します。
6) オプションで、保存したビジュアライゼーションをチャネルに追加できます。「表示設定」で、「このビジュアライゼーションをチャネルに追加/編集」の横にあるプラス記号を使用して、チャネルリストを展開します。
ビジュアライゼーションを追加するチャネルのチェック ボックスをオンにします。プライベート ビジュアライゼーションを追加するには、«プライベート ビュー» を選択します。URL を共有し、ビジュアライゼーションを「パブリック ビュー」に追加するには、「パブリック URL の作成」をクリックします。選択内容を更新するには、「表示設定を保存」をクリックします。
«風速測定値の加重平均を表示»
MATLAB Visualizationsを使用すると、同じプロット上の複数の出力を比較できます。たとえば、加重平均の方向を示す矢印を追加できます。
1) 加重平均を計算します。
aveDir = sum(rad.*windSpeed)/sum(windSpeed);
2) 測定された風向をデカルト座標に変換します。hold on
を使用してデータを同じプロット上に保持し、プロットを生成します。平均線を他の線と区別するには、線種'ro-'
を使用します。
w = mean(u); z = mean(v); % Generate the original plot. compass(u,v); hold on c = compass(w,z,'ro-'); c.LineWidth = 2;
参考
関数
Compass
(MATLAB) |thingSpeakRead