这段 MATLAB 代码的功能是将 EnergyPlus 天气数据 从 CSV 文件转换为 MAT 文件,并对数据进行插值,生成高分辨率(5 分钟间隔)的天气数据。以下是代码的详细解释:
输入参数:
-
csvFile
:EnergyPlus 天气数据的 CSV 文件路径。 -
matFile
:生成的 MAT 文件路径。
输出:
-
生成的 MAT 文件包含两个变量:
-
weather
:1 小时间隔的天气数据。 -
hiresWeather
:5 分钟间隔的高分辨率天气数据。
-
数据格式:
-
weather
矩阵(1 小时间隔):-
weather(:,1)
:时间戳(datenum
格式)。 -
weather(:,2)
:室外辐射强度(W/m²)。 -
weather(:,3)
:室外温度(℃)。 -
weather(:,4)
:室外水蒸气密度(kg/m³)。 -
weather(:,5)
:室外 CO₂ 密度(kg/m³)。 -
weather(:,6)
:风速(m/s)。 -
weather(:,7)
:天空温度(℃)。 -
weather(:,8)
:外部土壤层温度(℃)。 -
weather(:,9)
:每日辐射总量(MJ/m²/day)。 -
weather(:,10)
:海拔高度(m)。
-
-
hiresWeather
矩阵(5 分钟间隔):-
与
weather
矩阵的列相同,但时间间隔为 5 分钟。
-
代码逻辑:
-
加载 CSV 文件:
-
使用
xlsread
读取 CSV 文件,提取辐射、温度、湿度、天空辐射、风速和海拔等数据。
-
-
计算时间戳:
-
根据 CSV 文件中的时间信息生成时间戳(
datenum
格式)。
-
-
计算其他变量:
-
使用
rh2vaporDens
计算水蒸气密度。 -
使用
co2ppm2dens
计算 CO₂ 密度。 -
使用 Stefan-Boltzmann 定律计算天空温度。
-
-
拟合土壤温度:
-
使用正弦函数拟合土壤温度的年变化。
-
根据拟合结果计算每个时间点的土壤温度。
-
-
生成 1 小时间隔的
weather
矩阵:-
将提取和计算的数据组合成
weather
矩阵。 -
添加每日辐射总量和海拔高度。
-
-
插值生成 5 分钟间隔的
hiresWeather
矩阵:-
使用
pchip
插值方法将 1 小时间隔的数据插值为 5 分钟间隔。 -
添加每日辐射总量和海拔高度。
-
-
保存 MAT 文件:
-
将
weather
和hiresWeather
保存到指定的 MAT 文件中。
-
代码功能总结:
-
将 EnergyPlus 天气数据从 CSV 文件转换为 MAT 文件。
-
生成 1 小时间隔和 5 分钟间隔的天气数据。
-
支持辐射、温度、湿度、CO₂ 浓度、风速、天空温度、土壤温度等变量的计算和插值。
-
输出结果为 MAT 文件,便于在 MATLAB 中加载和使用。
示例:
假设需要将 CHN_Beijing.Beijing.545110_CSWD.csv
转换为 beiCSWD.mat
,可以调用:
csvFile = 'CHN_Beijing.Beijing.545110_CSWD.csv'; matFile = 'beiCSWD.mat'; energyPlusCsv2Mat(csvFile, matFile);
生成的 beiCSWD.mat
文件包含 weather
和 hiresWeather
两个变量,分别存储 1 小时间隔和 5 分钟间隔的天气数据。