使用罗盘图可视化方向数据
此示例演示了 MATLAB 中的矩阵计算以及在 MATLAB 可视化 App 中使用罗盘图来显示方向分布。在示例中,您将使用 ThingSpeak 中的 MATLAB Analysis 和 MATLAB Visualizations App 提供的代码模板之一作为起点。
ThingSpeak™ channel 12397 包含来自马萨诸塞州内蒂克 MathWorks 园区停车场顶部气象站的天气数据。字段 1 包含风速测量。
从模板代码创建 MATLAB 可视化
要创建来自 ThingSpeak通道的一组数据的罗盘图可视化,您可以使用提供的代码模板创建 MATLAB 脚本。
转到 App 选项卡并选择“MATLAB 可视化”。点击“新建”,选择“使用罗盘图可视化方向数据”,然后点击“创建”。
可视化您的数据
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 可视化比较同一图上的多个输出。示例,您可以添加指示加权平均方向的箭头。
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