【问题标题】:Nested 'if' statement inside 'for' loop not working - MATLAB'for'循环内的嵌套'if'语句不起作用 - MATLAB
【发布时间】: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


【解决方案1】:

如果其中一个变量是浮点数,那么进行这样的精确比较是有问题的。 = 比较可能效果更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多