有人能告诉我为什么这段代码几乎每次输出都打印(大坝级别太低)。

1次观看(过去30天)
clc;明确;接近
%给定尺寸的大坝
sa = 352760;湖表面积的% m
H = 26;坝壁高度% m
%大坝体积,单位ML
Maxvol = 352760 * 26 * 10 ^ 3;% V = sa * H
2020年11月1日湖水体积% ML
Newvol (1) = 352760 * 18.8 * 10 ^ 3;
湖水体积为100%,80%,30%
p100 = 1 * Maxvol;
p80 = 0.8 * Maxvol;
e = 0.3 * Maxvol;
每天都有水从湖中流出
Qout = 5.33 * 60 * 60 * 24 * 10 ^ 3;
%设置新变量为0
= 0;%将用于大坝超过容量的时候
b = 0;%将用于大坝容量低于30%的时候
载入数据百分比(河流流量)
秦= xlsread (“data_RiverDischarge.xls”);
matQout = [Qout];为每天的Qout值建立矩阵
使用'for'循环计算湖的日体积
k = 1:长度(秦)为秦向量的%指数
Newvol (k + 1) = Newvol (k) +(秦(k) -Qout);
如果Newvol > = p100;
Qout = 3.2 * (5.33 * 60 * 60 * 24 * 10 ^ 3);
流(“第一天%1.0f:大坝满了!”\ n”, k)
= + 1;
elseifNewvol>=p80 & Newvol
Qout = 3.2 * (5.33 * 60 * 60 * 24 * 10 ^ 3);
elseif新卷<=p80 &新卷>=p30;
Qout = (5.33 * 60 * 60 * 24 * 10 ^ 3);
其他的Newvol < e;
Qout =(1/2) *秦(k);
流(“当天%1.0f:大坝水位很低!”\ n”, k)
b = b + 1;
结束
matQout = [matQout Qout];%存储所有Qout值
结束
显示a和b
流(“大坝超过容量的次数是%5.0f \n”,)
流(“大坝容量低于30%的次数是%5.0f \n”, b)
%绘制相关数据点
次要情节(1,1)
情节(秦)
标题(“随着时间的推移,河水流入大坝”
包含(“2020年11月1日起(1-155)”
ylabel (“河排放(ML)”
次要情节(1、2)
情节(matQout)
标题(“随着时间的推移,大坝的每日释放量”
包含(“2020年11月1日起(1-155)”
ylabel (“每日释放(ML)”
次要情节(3、1,3)
情节(Newvol)
标题(“大坝日流量随时间变化”
包含(“2020年11月1日起(1-155)”
ylabel (“体积(ML)”
1评论
Stephen23
Stephen23 2021年9月20日
还要注意
其他的Newvol < e;
..
等于
其他的
Newvol < e;
..
也就是说,逻辑比较对ELSE完全没有影响。

登录评论。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2021年9月20日
Newvol (k + 1) = Newvol (k) +(秦(k) -Qout);
Newvol是一个向量。
如果Newvol > = p100;
您正在测试 整个 这个表述中的向量;Newvol>p100将返回a 向量 每个值对应向量Newvol中的每一项。而在 MATLAB ,当你使用 如果 时,条件为真,仅当 所有 被测试的值非0(即为“true”)—如果您有偶数 一个 值不满足测试,则条件为假。
你对你的elseif条件做了同样的事情,所以最终你通过了你的 其他的
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年9月20日
Newvol(k)实际上是“一天的开始”。Newvol(k+1)实际上是“一天的结束”。你想给哪一个留言?

登录评论。

类别

了解更多生物医学成像帮助中心而且文件交换

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!