Вложенный оператор if внутри цикла for не работает - MATLAB - PullRequest
2 голосов
/ 15 декабря 2011
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 иcent_air были определены и рассчитаны / введены ранее. Если я работаю над циклом как ячейка и вручную увеличиваю Temp, тогда значения D_H и т. Д. Все меняются. Но по какой-то причине, когда я пытаюсь выполнить цикл, оператор 'if', кажется, не вступает в силу, и окончательные значения, где Temp = 6000, отображаются в рабочей области вместо значения Temp, в котором он создает DELTA_H, равный это delta_h. Впервые я использую MATLAB примерно за 2 года (я учусь на 3-м курсе по механике английского языка), поэтому, пожалуйста, прости меня, если это простая ошибка, которую нужно исправить.

1 Ответ

2 голосов
/ 15 декабря 2011

Если какая-либо из переменных является плавающей точкой, выполнить точное сравнение подобным образом проблематично.Сравнение <= или> = может работать лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...