【发布时间】:2012-01-21 03:34:37
【问题描述】:
for Temp = 1000:10:6000
cp_CO2 = ((2e-18)*Temp.^5) - ((4e-14)*Temp.^4) + ((3e-10)*Temp.^3) - ((8e-07)*Temp.^2) + (0.0013*Temp) + 0.5126;
cp_CO = ((5e-12)*Temp.^3) - ((7e-08)*Temp.^2) + (0.0003*Temp) + 0.9657;
cp_H2O = ((7e-12)*Temp.^3) - ((1e-07)*Temp.^2) + (0.0008*Temp) + 1.6083;
cp_N2 = ((-1e-18)*Temp.^5) + ((2e-14)*Temp.^4) - ((8e-11)*Temp.^3) + ((1e-07)*Temp.^2) + (0.0001*Temp) + 0.9985;
D_H = (y(1)*cp_CO2*44*(25-Temp)) + (y(2)*cp_CO*28*(25-Temp)) + (y(3)*cp_H2O*18*(25-Temp)) + (percent_air*x_final(2)*3.76*28*(25-Temp));
DELTA_H = round(D_H);
if DELTA_H == delta_h
break
end
end
我的代码中的“for”循环在上面,变量 delta_h、y 和 percent_air 已被定义并较早地计算/输入。如果我将循环作为一个单元工作并手动增加 Temp ,那么 D_H 等的值都会改变。但是由于某种原因,当我尝试执行循环时,“if”语句似乎没有生效,并且 Temp = 6000 的最终值显示在工作区中,而不是 Temp 的值,它产生的 DELTA_H 等于delta_h 的。这是我大约 2 年以来第一次使用 MATLAB(我是机械工程三年级的学生),所以如果这是一个简单的错误,请原谅我。
【问题讨论】:
-
delta_h是整数吗?如果不是,那么你也应该round()它,因为DELTA_H是四舍五入的。 -
如果任何一个变量都是浮点数,那么进行这样的精确比较是有问题的。你能改用 = 比较吗?
-
是的,我也这么认为,但是当我尝试它时,它并没有改变任何东西
-
成功了,使用
-
@user1099810 另见this问题
标签: matlab if-statement for-loop