这段 MATLAB 代码用于生成 温室在无灯具场景下的四天温度、遮阳幕、冷却、室外温度和太阳辐射 的图表,并绘制相应的曲线。以下是代码的详细解释:
1. 注释部分
-
代码开头的注释说明了这段代码的用途:生成无灯具场景下的四天数据图表,用于绘制图5.8。
-
该图来自于 David Katzin 的博士论文,论文研究了通过 LED 照明在温室中节能的方法。
-
代码作者是 David Katzin,代码的最后更新日期是 2021 年 4 月。
2. 加载数据
-
outputFolder
定义了存储模拟输出文件的文件夹路径。 -
加载两个模拟数据文件:
-
N-HH_ams_noLamp_hHarvest_day350_length350.mat
:带有热回收的无灯具场景数据,存储在变量nlhh
中。 -
N_ams_noLamp_day350_length350.mat
:无热回收的无灯具场景数据,存储在变量nl
中。
-
3. 颜色定义
-
cc = lines();
生成一组默认的 MATLAB 颜色。 -
blue
,red
,yellow
,purple
,green
分别提取了lines
颜色集中的前五种颜色,用于后续绘图。
4. 绘制图表
-
使用
subplot
创建一个 3 行 1 列的图形布局,分别绘制温度、遮阳幕与冷却、室外温度与太阳辐射的曲线。
子图1:室内温度
-
subplot(3,1,1)
选择第一个子图。 -
使用
plotMeans
绘制无热回收场景(nl
)和有热回收场景(nlhh
)的室内温度曲线:-
plotMeans(nl.x.tAir,12,'LineWidth',0.5);
绘制无热回收场景的室内温度曲线。 -
plotMeans(nlhh.x.tAir,12,'--');
绘制有热回收场景的室内温度曲线(虚线)。 -
plotMeans(nlhh.a.heatSetPoint-1,12);
绘制温度设定点曲线。
-
-
设置 x 轴范围和刻度:
-
xlim([83*86400 87*86400]-3600)
设置 x 轴范围为第 83 天到第 87 天。 -
xticks((83*86400:86400:87*86400)-3600)
设置 x 轴刻度为每天的起始点。 -
xticklabels(datestr(350+(83:87),'dd/mm'))
将刻度标签设置为日期格式(日/月)。
-
-
设置 y 轴范围和刻度:
-
ylim([17 24])
设置 y 轴范围为 17°C 到 24°C。 -
yticks(18:2:26)
设置 y 轴刻度为 18°C 到 26°C,间隔为 2°C。
-
-
添加图例、y 轴标签和 x 轴标签。
子图2:遮阳幕与冷却
-
subplot(3,1,2)
选择第二个子图。 -
使用
plot
绘制无热回收场景(nl
)和有热回收场景(nlhh
)的遮阳幕闭合百分比曲线:-
plot(100*nl.u.thScr,'LineWidth',0.5);
绘制无热回收场景的遮阳幕闭合百分比曲线。 -
plot(100*nlhh.u.thScr,'--');
绘制有热回收场景的遮阳幕闭合百分比曲线(虚线)。
-
-
设置 y 轴范围和标签:
-
ylim([0 150])
设置 y 轴范围为 0% 到 150%。 -
ylabel('Thermal screen closure (%)')
设置 y 轴标签。
-
-
使用
yyaxis right
切换到右侧 y 轴,绘制有热回收场景的冷却功率曲线:-
plot(nlhh.a.hAirMech+nlhh.a.lAirMech);
绘制冷却功率曲线。
-
-
设置右侧 y 轴范围和标签:
-
ylim([0 80])
设置 y 轴范围为 0 W/m² 到 80 W/m²。 -
ylabel('Cooling N HH (W m^{-2})')
设置 y 轴标签。
-
-
设置 x 轴范围和刻度,添加图例和 x 轴标签。
子图3:室外温度与太阳辐射
-
subplot(3,1,3)
选择第三个子图。 -
使用
plot
绘制室外温度曲线:-
plot(nl.d.tOut,'Color',blue)
绘制室外温度曲线。 -
plot([83*86400 87*86400]-3600,[5 5],'--','Color',blue)
绘制室外温度阈值线(5°C)。
-
-
设置 y 轴范围和标签:
-
ylim([-2 12])
设置 y 轴范围为 -2°C 到 12°C。 -
ylabel('Outdoor temperature (癈)')
设置 y 轴标签。
-
-
使用
yyaxis right
切换到右侧 y 轴,绘制太阳辐射曲线:-
plot(nl.d.iGlob,'Color',red)
绘制太阳辐射曲线。 -
plot([83*86400 87*86400]-3600,[50 50],'--','Color',red)
绘制太阳辐射阈值线(50 W/m²)。
-
-
设置右侧 y 轴范围和标签:
-
ylim([0 550])
设置 y 轴范围为 0 W/m² 到 550 W/m²。 -
ylabel('Solar radiation (W m^{-2})')
设置 y 轴标签。
-
-
设置 x 轴范围和刻度,添加图例和 x 轴标签。
5. 代码的整体功能
-
这段代码的主要功能是从无灯具场景的模拟数据中提取温度、遮阳幕、冷却、室外温度和太阳辐射数据,并绘制它们的曲线。
-
通过这种方式,可以直观地比较不同场景下的温室环境参数变化,帮助研究人员理解热回收和遮阳幕对温室温度的影响。
6. 代码的用途
-
这段代码用于分析温室在无灯具场景下的温度、遮阳幕、冷却、室外温度和太阳辐射的变化趋势,帮助研究人员评估不同策略对温室环境的影响。
-
通过观察这些参数的变化,可以优化温室的温度控制和节能策略。
7. 可能的改进
-
如果
plotMeans
函数的实现不明确,可以进一步解释该函数的具体逻辑。 -
可以添加更多的注释,解释每个步骤的目的,以便其他研究人员更容易理解和使用这段代码。
-
可以将不同年份或不同场景的数据绘制在同一图中,以便更直观地比较它们的差异。
总结来说,这段代码是一个用于分析和可视化 温室在无灯具场景下的温度、遮阳幕、冷却、室外温度和太阳辐射 的工具,帮助研究人员更好地理解温室环境的变化趋势,并为节能策略的制定提供数据支持。