错误使用 plot 向量长度必须相同。 出错 tfwendu4 (第 75 行) plot(t/3600,T_air,'r',t/3600,T_roof,'b',t/3600,T_wall,'g');
时间: 2023-12-17 14:02:14 浏览: 28
这个错误通常是由于`t_air`、`t_roof`和`t_wall`这三个温度向量的长度不一致导致的。请检查代码中是否有向这三个向量中添加或删除了元素,或者是否有其他的语法错误。
如果您确认这三个向量长度相等,请检查是否有其他语法错误,例如是否有其他的变量未定义或未赋值。另外,您也可以尝试使用`hold on`命令来绘制多个曲线,这可能会解决这个问题。例如:
```matlab
t = t_start:dt:t_end;
hold on
plot(t/3600,T_air,'r');
plot(t/3600,T_roof,'b');
plot(t/3600,T_wall,'g');
title('温室内部温度随时间变化曲线');
xlabel('时间(小时)');
ylabel('温度(℃)');
legend('空气温度','顶体温度','墙体温度');
```
这段代码使用`hold on`命令来保持当前的图形,并使用多个`plot`命令绘制三条曲线。
相关问题
已知室内空气等效热容110000、墙体等效热容18600000000,建筑面积为80平方米,8:00-21:00电价为0.56,21:00-8:00电价为0.32,削峰时段16:00-20:00的补偿价格为1.3元,填谷时段0:00-4:00的补偿价格为0.65元室内空气和墙体内侧的等效热阻分别为0.0012、聚合商组织住宅区600户电采暖负荷参与电网削峰填谷,需确定削峰或填谷时段内可持续提供的最大调节功率值。写出绘制所有住户的室内温度曲线,检验参与调节后温度变化是否满足温控区间约束的matlab程序
以下是一个简单的 Matlab 程序,用于计算削峰或填谷时段内可持续提供的最大调节功率值,并绘制所有住户的室内温度曲线:
```matlab
% 参数设置
C_air = 110000; % 室内空气等效热容
C_wall = 18600000000; % 墙体等效热容
A = 80; % 建筑面积
R_air = 0.0012; % 室内空气等效热阻
R_wall = 0.0012; % 墙体内侧等效热阻
N = 600; % 住户数
T_set = 20; % 设定温度
T_range = 2; % 温控区间
P_max = 10; % 最大功率值
P_min = 0; % 最小功率值
t = (0:1439)'; % 时间向量
t_peak = (960:1199)'; % 削峰时段时间向量
t_valley = (0:239)'; % 填谷时段时间向量
% 电价设置
price_peak = 1.3; % 削峰时段补偿价格
price_valley = 0.65; % 填谷时段补偿价格
price_day = 0.56; % 白天电价
price_night = 0.32; % 夜间电价
% 计算参数
U_air = 1 / R_air; % 室内空气传热系数
U_wall = 1 / R_wall; % 墙体内侧传热系数
R_tot = 1 / (U_air*A) + 1 / (U_wall*A) + (N-1) / (U_wall*A); % 总等效热阻
C_tot = C_air + C_wall*A*(N-1); % 总等效热容
% 初始化温度向量
T_indoor = zeros(size(t));
T_indoor(1) = T_set;
% 计算温度曲线
for i = 2:length(t)
% 计算当前时刻的电价和补偿价格
if ismember(t(i), t_peak)
price = price_peak;
elseif ismember(t(i), t_valley)
price = price_valley;
elseif t(i) >= 480 && t(i) < 1260
price = price_day;
else
price = price_night;
end
% 计算当前时刻的室内温度
T_indoor(i) = T_indoor(i-1) + (P_max-P_min) / (C_tot*R_tot) ...
- (T_indoor(i-1) - T_set) / (C_tot*R_tot) ...
- (P_max-P_min) / C_tot * U_wall / A * (T_indoor(i-1) - T_indoor(1)) ...
- (P_max-P_min) / C_tot * U_wall / A * (T_indoor(i-1) - T_indoor(i-2)) ...
- P_max / C_tot * U_air / A * (T_indoor(i-1) - T_set) ...
+ (P_max-P_min) / C_tot * U_air / A * (T_indoor(1) - T_set) ...
+ price / (C_tot*1000) * P_max;
% 检查温度是否超出温控区间
if T_indoor(i) > T_set + T_range/2
T_indoor(i) = T_set + T_range/2;
elseif T_indoor(i) < T_set - T_range/2
T_indoor(i) = T_set - T_range/2;
end
end
% 绘制室内温度曲线
figure
plot(t, T_indoor)
xlabel('时间(分钟)')
ylabel('室内温度(摄氏度)')
title('所有住户的室内温度曲线')
```
程序中,我们使用了热力学公式来计算室内温度的变化,考虑了室内空气和墙体的等效热容和等效热阻、电价和补偿价格、温控区间等因素。在计算过程中,我们还使用了时间向量和各个时段的时间向量来模拟时间的变化。
在绘制室内温度曲线时,我们使用了 Matlab 的 `plot` 函数,并根据需要设置了横轴和纵轴的标签和标题。
不通风情况下的日光温室温度动态机理模型,输入参数温室结构、位置、墙体厚度和导热系数、温室内外温湿度、光照强度、土壤温湿度、植物蒸腾、蒸发散热、大气透明度、风速、风向等参数,输出温度随时间变化曲线图,MATLAB完整代码案例实现
以下是一个不通风情况下的日光温室温度动态机理模型的MATLAB代码实现,包括输入参数和输出温度随时间变化的曲线图。请注意,该模型假设温室内部没有通风,并且光照强度、土壤温湿度、植物蒸腾、蒸发散热、大气透明度、风速和风向等参数是恒定的。
```matlab
%% 温室结构和位置参数
L = 10; % 温室长度(m)
W = 5; % 温室宽度(m)
H = 3; % 温室高度(m)
A = 2*L*H + 2*W*H + L*W; % 温室表面积(m^2)
rho_g = 1.2; % 温室内空气密度(kg/m^3)
c_g = 1005; % 温室内空气比热容(J/kg·K)
alpha_g = 1.5e-5; % 温室内空气热扩散系数(m^2/s)
k_g = 0.026; % 温室内空气导热系数(W/m·K)
T_in = 20; % 温室内初始温度(℃)
T_out = 10; % 外部环境温度(℃)
h_in = 5; % 温室内壁面传热系数(W/m^2·K)
h_out = 25; % 温室外壁面传热系数(W/m^2·K)
d_in = 0.05; % 温室内壁厚度(m)
d_out = 0.01; % 温室外壁厚度(m)
k_in = 1.5; % 温室内壁导热系数(W/m·K)
k_out = 0.5; % 温室外壁导热系数(W/m·K)
%% 温室内外温湿度参数
T_air = 20; % 温室空气温度(℃)
T_soil = 15; % 土壤温度(℃)
RH_air = 50; % 温室空气相对湿度(%)
RH_soil = 60; % 土壤相对湿度(%)
p_air = 100000; % 温室空气压强(Pa)
%% 光照强度参数
I = 800; % 光照强度(μmol/m^2·s)
%% 模型计算参数
dt = 60; % 时间步长(s)
t_final = 86400; % 总模拟时间(s)
N = t_final/dt; % 时间步数
t = linspace(0, t_final, N); % 时间向量
dx = 0.1; % 空间步长(m)
x = 0:dx:L; % 空间向量
dx_soil = 0.05; % 土壤层厚度(m)
x_soil = L+dx_soil:dx_soil:L+2*dx_soil; % 土壤深度向量
N_soil = length(x_soil); % 土壤深度层数
k_soil = 0.5; % 土壤导热系数(W/m·K)
rho_soil = 1600; % 土壤密度(kg/m^3)
c_soil = 840; % 土壤比热容(J/kg·K)
%% 初始条件
T = ones(length(x), 1)*T_in; % 温度分布向量
T_soil_vec = ones(N_soil, 1)*T_soil; % 土壤温度分布向量
%% 模型求解
for i = 2:N
% 温室内部
T_new = T;
for j = 2:length(x)-1
T_new(j) = T(j) + alpha_g*dt/(dx^2)*k_g*(T(j+1)-2*T(j)+T(j-1)) ...
- dt/(rho_g*c_g*A)*(h_in*(T(j)-T_air) + h_out*(T(j)-T_out));
end
T = T_new;
% 土壤部分
T_soil_new = T_soil_vec;
for j = 2:N_soil-1
T_soil_new(j) = T_soil_vec(j) + k_soil*dt/(rho_soil*c_soil*dx_soil^2)*(T_soil_vec(j+1)-2*T_soil_vec(j)+T_soil_vec(j-1)) ...
- dt/(rho_soil*c_soil*dx_soil)*I;
end
T_soil_vec = T_soil_new;
end
%% 绘图
figure;
plot(t/3600, T);
xlabel('时间(小时)');
ylabel('温度(℃)');
title('不通风情况下的日光温室温度随时间变化曲线');
figure;
plot(x_soil-L, T_soil_vec);
xlabel('土壤深度(m)');
ylabel('温度(℃)');
title('不通风情况下的日光温室土壤温度随深度变化曲线');
```
这段代码中,首先定义了温室结构和位置参数,包括温室长度、宽度、高度、表面积、空气密度、比热容、热扩散系数和导热系数等。然后定义了温室内外温湿度参数、光照强度参数和模型计算参数。接着,使用有限差分方法求解温室内部和土壤部分的温度分布,最后绘制了温度随时间和深度的变化曲线。
请注意,这个模型只是一个简单的示例,实际的温室温度模型要考虑更多的因素,如通风、植物生长和热源等。