这段 MATLAB 代码的功能是从温室实验数据集中加载并处理数据,提取出与温室环境相关的室外、室内和控制变量。以下是代码的详细解释:
输入参数:
firstDay
:从实验的第几天开始提取数据(可以是小数,表示部分天数)。seasonLength
:提取的数据长度(天数,可以是小数)。type
:数据集类型,支持以下选项:'hps'
:使用高压钠灯(HPS)的实验数据。'led'
:使用 LED 灯的实验数据。
filter
(可选):数据过滤条件,用于筛选特定条件下的数据。
输出参数:
outdoor
:室外环境数据矩阵,包含以下列:outdoor(:,1)
:时间戳(秒,从实验开始计算)。outdoor(:,2)
:辐射强度(W/m²)。outdoor(:,3)
:室外温度(℃)。outdoor(:,4)
:室外湿度(kg/m³)。outdoor(:,5)
:室外 CO₂ 浓度(kg/m³)。outdoor(:,6)
:风速(m/s)。outdoor(:,7)
:原始时间戳(datenum
格式)。
indoor
:室内环境数据矩阵,包含以下列:indoor(:,1)
:时间戳(秒,从实验开始计算)。indoor(:,2)
:室内温度(℃)。indoor(:,3)
:室内湿度(kg/m³)。indoor(:,4)
:室内 CO₂ 浓度(ppm)。
controls
:控制变量矩阵,包含以下列:controls(:,1)
:时间戳(秒,从实验开始计算)。controls(:,2)
:能量幕布关闭程度(0-1,1 表示完全关闭)。controls(:,3)
:遮光幕布关闭程度(0-1,1 表示完全关闭)。controls(:,4)
:平均通风开度(0-1,1 表示完全打开)。controls(:,5)
:管道温度(℃)。controls(:,6)
:生长管道温度(℃)。controls(:,7)
:顶部灯光状态(0/1,1 表示开启)。controls(:,8)
:中间灯光状态(0/1,1 表示开启)。controls(:,9)
:CO₂ 注入状态(0/1,1 表示开启)。controls(:,10)
:背风侧通风开度(0-1,1 表示完全打开)。controls(:,11)
:迎风侧通风开度(0-1,1 表示完全打开)。
startTime
:提取数据的起始时间(datetime
格式)。filtInd
:数据过滤后的索引。
代码逻辑:
- 加载数据文件:
- 根据
type
参数加载对应的数据集文件(dataHPS.mat
或dataLED.mat
)。 - 如果数据集是
'hps'
或'led'
,则将中间灯光状态列(第 15 列)设置为 0(因为这些实验没有中间灯光)。
- 根据
- 提取指定时间段的数据:
- 根据
firstDay
和seasonLength
计算需要提取的数据范围。 - 将数据截取到指定范围内。
- 根据
- 数据过滤:
- 根据
filter
参数筛选数据。支持多种过滤条件,例如:'dark'
:无阳光且顶部灯光关闭。'blScr'
:遮光幕布关闭。'noScreens'
:能量幕布和遮光幕布都打开。- 等等。
- 如果未提供
filter
参数,则默认不进行过滤。
- 根据
- 数据格式化:
- 将时间戳转换为从实验开始计算的秒数。
- 计算室外湿度和 CO₂ 浓度。
- 提取并格式化室内环境数据和控制变量。
- 返回结果:
- 返回格式化后的
outdoor
、indoor
、controls
、startTime
和filtInd
。
- 返回格式化后的
辅助函数:
rh2vaporDens
:- 将相对湿度(%)转换为水蒸气浓度(kg/m³)。
- 需要根据温度和相对湿度计算饱和水蒸气压力。
co2ppm2dens
:- 将 CO₂ 浓度(ppm)转换为密度(kg/m³)。
- 需要根据温度和气压计算。