这段 MATLAB 代码用于生成一幅图,展示在不同场景下,使用光照加热温室的冷时数(cold hours)和最低温度。该图用于论文中的图4,论文标题为《Heating greenhouses by light: A novel concept for intensive greenhouse production》,发表在《Biosystems Engineering》期刊上。
代码的主要功能如下:
1. 数据收集:
-
outputFolder
:指定存储模拟输出数据的文件夹路径。 -
files
:读取outputFolder
文件夹中的所有文件(跳过前两个系统文件.
和..
)。 -
coldHoursSummary
:初始化一个空单元格数组,用于存储每个文件的冷时数和最低温度数据。 -
循环处理文件:
-
使用
for
循环遍历每个文件。 -
加载文件中的数据(
gl
结构体)。 -
调用
coldHourAnalysis
函数计算最低温度(minTemp
)和冷时数(coldHours
)。 -
对文件名进行处理,生成标签(
label
),用于后续图例。 -
将文件名、最低温度、冷时数和标签存储在
coldHoursSummary
中。
-
-
重新排序:对
coldHoursSummary
中的数据进行重新排序,以便在图中按特定顺序显示。
2. 绘图:
-
颜色定义:使用
lines()
函数生成一组颜色。 -
柱状图:
-
使用
bar
函数绘制冷时数的柱状图。 -
在柱状图上添加冷时数的数值标签(
text
函数)。 -
设置 y 轴标签为“冷时数(h)”,并限制 y 轴范围为
[0, 250]
。
-
-
右侧 y 轴:
-
使用
yyaxis right
激活右侧 y 轴。 -
使用
scatter
函数绘制最低温度的散点图。 -
在散点图上添加最低温度的数值标签(
text
函数)。 -
设置右侧 y 轴标签为“最低室内温度(℃)”,并限制 y 轴范围为
[10, 20]
。
-
-
x 轴设置:
-
设置 x 轴刻度和标签,使用
coldHoursSummary
中的标签。 -
限制 x 轴范围为
[0.5, 16.5]
。
-
-
图例:添加图例,标识“冷时数”和“最低室内温度”。
-
修改标签:将第二个 x 轴标签修改为
'N HS'
。
代码的输出:
-
该代码生成一幅双 y 轴图:
-
左侧 y 轴:显示冷时数(柱状图)。
-
右侧 y 轴:显示最低室内温度(散点图)。
-
x 轴:显示不同场景的标签。
-
数值标签:在柱状图和散点图上分别显示冷时数和最低温度的具体数值。
-
代码的用途:
-
该代码用于分析不同场景下温室加热系统的性能,特别是冷时数和最低温度的变化。通过可视化这些数据,研究人员可以评估不同加热策略的效果,并为温室加热系统的优化提供依据。
代码中的关键变量:
-
coldHoursSummary
:存储每个文件的文件名、最低温度、冷时数和标签。 -
minTemp
:最低室内温度。 -
coldHours
:冷时数(即温度低于某一阈值的小时数)。 -
label
:场景标签,用于 x 轴的显示。
代码的依赖:
-
coldHourAnalysis
函数:该函数用于计算最低温度和冷时数。代码中未给出该函数的定义,可能是作者自定义的函数。
总结:
这段代码主要用于生成一幅双 y 轴图,展示不同场景下温室的冷时数和最低温度。通过可视化这些数据,研究人员可以评估不同加热策略的效果,并为温室加热系统的设计和优化提供依据。