使用指南针图可视化方向数据
此示例演示了 MATLAB 中的矩阵计算以及 MATLAB Visualization App 中的罗盘图的使用来显示方向分布。在示例中,作为起点,您使用 ThingSpeak 中的 MATLAB Analysis 和 MATLAB Visualization App 提供的代码模板之一。
ThingSpeak™ 通道 12397 包含来自位于马萨诸塞州纳蒂克 MathWorks 校园停车场顶部的气象站的天气数据。字段 1 包含风速测量值。
从模板代码创建 MATLAB Visualization
要创建来自 ThingSpeak 通道的一组数据的指南针图可视化,您可以使用提供的代码模板创建 MATLAB 脚本。
转至 Apps 选项卡并选择 MATLAB Visualizations。点击 New,选择 Visualize directional data with compass plot,然后点击 Create。
可视化您的数据
ThingSpeak 使用模板代码填充 MATLAB Code 字段以读取数据,然后生成面积图。
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) 按 Save and Run 以生成图。指南针图是根据实时数据生成的,因此您的可视化效果与此图不同。该图显示了近期风测量的方向分布和强度。
6) 您可以选择将已保存的可视化效果添加到您的通道。在 Display Settings 中,使用 Add/Edit this Visualization to a Channel 旁边的加号来展开通道列表。
选中要添加可视化效果的通道的复选框。要添加私有可视化效果,请选择 Private View。要共享 URL 并将可视化内容添加到 Public View,请点击 Create a public URL。要更新您的选择,请点击 Save Display Settings。
显示风速测量值的加权平均值
您可以使用 MATLAB Visualization 比较同一张图上的多个输出。例如,您可以添加一个指示加权平均方向的箭头。
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