不通风情况下的日光温室动态模型,输入参数有温室结构、位置、墙体结构和导热系数、温室内外气候参数、水分蒸发、植物蒸腾等多个参数,输出温度随时间变化曲线图,matlab完整代码案例
时间: 2023-07-10 18:09:09 浏览: 47
以下是一个基于MATLAB的日光温室动态模型的完整代码案例,其中包含了输入参数和输出结果的处理:
```matlab
% 温室结构参数
L = 7; % 温室长度,单位:m
W = 3; % 温室宽度,单位:m
H = 2.5; % 温室高度,单位:m
V = L * W * H; % 温室体积,单位:m^3
A = 2 * H * (L + W); % 温室表面积,单位:m^2
U = 2.6; % 温室墙体传热系数,单位:W/(m^2*K)
k = 0.15; % 温室墙体导热系数,单位:W/(m*K)
% 温室内气候参数
Tin = 25; % 温室内部温度,单位:℃
RHin = 60; % 温室内部相对湿度,单位:%
CO2in = 400; % 温室内部二氧化碳浓度,单位:ppm
% 温室外气候参数
Tout = [10 12 14 16 18 20 22 24 26 28 30 32 30 28 26 24 22 20 18 16 14 12 10]; % 温室外部温度,单位:℃
RHout = 50; % 温室外部相对湿度,单位:%
CO2out = 400; % 温室外部二氧化碳浓度,单位:ppm
% 植物参数
G = 10; % 植物数量,单位:个
S = L * W / G; % 植物生长面积,单位:m^2
ETp = 0.6; % 植物蒸腾量,单位:mmol/(m^2*s)
ETa = 0.3; % 温室内空气蒸发量,单位:mmol/(m^2*s)
% 模拟时间参数
t_start = 0; % 模拟起始时间,单位:s
t_end = 24*3600; % 模拟结束时间,单位:s
dt = 60; % 时间步长,单位:s
% 初始化温度、湿度、二氧化碳浓度数组
T = ones(1,length(Tout)+1)*Tin; % 温室内部温度,单位:℃
RH = ones(1,length(Tout)+1)*RHin; % 温室内部相对湿度,单位:%
CO2 = ones(1,length(Tout)+1)*CO2in; % 温室内部二氧化碳浓度,单位:ppm
% 计算导热系数、热容量、质量
k = U * A; % 温室墙体导热系数,单位:W/K
C = 1.2 * V; % 温室热容量,单位:J/K
m = 1.2 * V / (287 * Tin); % 温室空气质量,单位:kg
% 循环计算温室内部温度、湿度、二氧化碳浓度
for t = t_start:dt:t_end
% 计算温室外部气候参数
Tout_index = floor(t/(3600*24/length(Tout)))+1;
Tout_index = min(Tout_index, length(Tout));
Tout_index = max(Tout_index, 1);
Tout_current = Tout(Tout_index); % 当前时间的温室外部温度,单位:℃
RHout_current = RHout; % 当前时间的温室外部相对湿度,单位:%
CO2out_current = CO2out; % 当前时间的温室外部二氧化碳浓度,单位:ppm
% 计算植物蒸腾和空气蒸发量
ET_plant = G * S * ETp; % 植物蒸腾总量,单位:mmol/s
ET_air = V * ETa; % 温室内空气蒸发总量,单位:mmol/s
% 计算温室内部温度变化
dT = (Tout_current - T(end) + k/m * (T(end-1) - T(end)))/C * dt;
T(end+1) = T(end) + dT;
% 计算温室内部相对湿度变化
dRH = (RHout_current - RH(end) + ET_plant + ET_air)/(V/18*RH(end)/1000) * dt;
RH(end+1) = RH(end) + dRH;
% 计算温室内部二氧化碳浓度变化
dCO2 = (CO2out_current - CO2(end) + ET_plant * 44/12)/(V/22.4*CO2(end)/1000000) * dt;
CO2(end+1) = CO2(end) + dCO2;
end
% 绘制温室内部温度、湿度、二氧化碳浓度随时间的变化曲线图
t = 0:dt:t_end;
subplot(3,1,1); plot(t/3600,T); title('温室内部温度变化曲线'); xlabel('时间/h'); ylabel('温度/℃');
subplot(3,1,2); plot(t/3600,RH); title('温室内部相对湿度变化曲线'); xlabel('时间/h'); ylabel('相对湿度/%');
subplot(3,1,3); plot(t/3600,CO2); title('温室内部二氧化碳浓度变化曲线'); xlabel('时间/h'); ylabel('二氧化碳浓度/ppm');
```
上述代码中,我们首先定义了温室结构参数、温室内外气候参数、植物参数等多个输入参数,并且对应的单位也都进行了标注。然后,我们通过循环计算温室内部温度、湿度、二氧化碳浓度的变化情况,并且记录下每个时间步长的温度、湿度、二氧化碳浓度值。最后,我们将这些结果绘制成为温室内部温度、湿度、二氧化碳浓度随时间的变化曲线图。
值得注意的是,在计算温室内部温度变化时,我们考虑了温室外部气候参数、温室墙体传热系数、温室内部空气质量等多个因素;在计算温室内部相对湿度和二氧化碳浓度变化时,我们还考虑了植物蒸腾和空气蒸发等因素。这样可以更加准确地模拟温室内部的变化情况。