这段 MATLAB 代码的功能是绘制 15 个地点的年平均温度和辐射数据的散点图,并生成一个图形。这些数据用于生成论文中的图 2(Figure 2),论文标题为《Energy savings in greenhouses by transition from high-pressure sodium to LED lighting》。以下是代码的详细解释:
代码功能:
-
加载数据:
-
从指定文件夹加载 15 个地点的天气数据(
weather
变量)。 -
每个地点的数据存储在 MAT 文件中,文件名为
[location]EnergyPlus.mat
(例如amsEnergyPlus.mat
)。
-
-
计算年平均值和辐射:
-
对每个地点的温度和辐射数据,计算年平均值。
-
温度数据存储在
weather(:,3)
中,单位为 ℃。 -
辐射数据存储在
weather(:,2)
中,单位为 W/m²,转换为 MJ/m²/day。
-
-
绘制散点图:
-
使用
scatter
函数绘制每个地点的年平均温度和辐射数据。 -
每个地点用不同颜色表示,并在数据点旁边标注地点名称。
-
-
图形设置:
-
添加网格、坐标轴标签和图例。
-
代码结构:
-
初始化:
-
设置当前文件夹路径和数据文件夹路径。
-
定义颜色。
-
-
分配颜色:
-
使用
lines
颜色映射为每个地点分配颜色,确保颜色与论文中的图 1 一致。
-
-
加载数据并绘制散点图:
-
逐个加载每个地点的天气数据。
-
计算年平均温度和辐射。
-
使用
scatter
函数绘制散点图,并标注地点名称。
-
-
图形设置:
-
添加网格、坐标轴标签。
-
代码详细解析:
1. 初始化
currentFile = mfilename('fullpath'); currentFolder = fileparts(currentFile); dataFolder = [currentFolder '\data\'];
-
获取当前文件的路径,并设置数据文件夹路径。
2. 定义颜色
cc = lines(100); AMS = cc(1,:); BEI = cc(2,:); CAL = cc(4,:); CHE = cc(5,:); KIR = cc(3,:); STP = cc(6,:); TOK = cc(7,:); URU = cc(12,:); ANC = cc(8,:); SAM = cc(3,:); SHA = cc(4,:); WIN = cc(12,:); ARK = cc(13,:); MOS = cc(14,:); VEN = cc(5,:);
-
使用
lines
颜色映射生成 100 种颜色。 -
为每个地点分配颜色,确保颜色与论文中的图 1 一致。
3. 加载数据并绘制散点图
load([dataFolder 'amsEnergyPlus.mat'], 'weather') temp = mean(weather(:,3)); rad = mean(weather(:,2)); scatter(temp,rad*86400*1e-6,50,AMS,'filled'); text(temp+0.25,rad*86400*1e-6-0.25,'AMS','Color',AMS); hold on k=1; out(k,1:2) = [temp rad];
-
加载阿姆斯特丹(AMS)的天气数据。
-
计算年平均温度和辐射。
-
使用
scatter
函数绘制散点图,并标注地点名称。 -
将结果存储在
out
矩阵中。
4. 重复加载和绘制其他地点
-
对其他 14 个地点重复上述步骤,加载数据、计算平均值、绘制散点图并标注地点名称。
5. 图形设置
grid xlabel('Temperature (癈)') ylabel('Radiation (MJ m^{-2} day^{-1})');
-
添加网格和坐标轴标签。
输出结果:
-
生成一个散点图,显示 15 个地点的年平均温度和辐射数据。
-
每个数据点表示一个地点的年平均值,标注地点名称。
-
图形用于论文中的图 2,展示不同地点的气候特征。
示例:
假设数据文件夹中包含以下文件:
-
amsEnergyPlus.mat
-
ancEnergyPlus.mat
-
arkEnergyPlus.mat
-
等等。
运行代码后,将生成一个散点图,显示 15 个地点的年平均温度和辐射数据。每个数据点用不同颜色表示,并标注地点名称。