Borrar filtros
Borrar filtros

For loop problem; could you help?

2 visualizaciones (últimos 30 días)
Young Lee
Young Lee el 20 de Mayo de 2020
Editada: Stephen23 el 22 de Mayo de 2020
I wish to calculate w to plot for (T,w) for every thi values and T values, my goal is to plot psychrometric chart
do I need to use double for loop on this case??
eg for thi = 0,1 , T = 0:1:60 , find w ;; for thi = 0,2 , T = 0:1:60 find w2 ..... ;;; for thi = 1 , t = T = 0:1:60 find w(n)
pg(i) has been successfully computed but struggling on finding w vectors.
Could you please take a look into this?
%%% welxer formulation
g0 = -2.9912729*1000;
g1 = -6.0170128*1000;
g2 = 1.887643854*10;
g3 = -2.8354721*10^-2;
g4 = 1.7838301*10^-5;
g5 = -8.4150417*10^-10;
g6 = 4.4412543*10^-13;
g7 = 2.858487;
% T ; %%%
%%%
T = 273.15:1:273.15+60 %%% temperature
thi = 0.1 : 0.1 : 1
for i = 1:length(T)
Pg(i) = exp((g0/T(i)^2 + g1/T(i) + g2 + g3*T(i) + g4* T(i)^2 + g5 *T(i)^3 + g6*T(i)^4 ) + g7*log(T(i)))/1000;
%%%%% I would like save w vectors for for every thi = 0:0.1:1 , T = 0:1:60
w(i) = (0.622*thi*Pg(i)/101-thi*Pg(i); %%%???
end

Respuesta aceptada

Stephen23
Stephen23 el 20 de Mayo de 2020
Editada: Stephen23 el 22 de Mayo de 2020
thi = 0.1:0.1:1;
T = 273.15:1:273.15+60; %%% temperature
N = numel(T);
w = nan(numel(thi),N); % preallocate!
Pg = nan(1,N); % preallocate!
for k = 1:N
Pg(k) = exp((g0/T(k)^2 + g1/T(k) + g2 + g3*T(k) + g4* T(k)^2 + g5 *T(k)^3 + g6*T(k)^4 ) + g7*log(T(k)))/1000;
w(:,k) = 0.622*thi*Pg(k)./101-thi*Pg(k);
end
Every column of w is one result vector for one temperature.
  6 comentarios
Young Lee
Young Lee el 21 de Mayo de 2020
sorry I am still having difficulty on this, if u could find the problem that would be great...
basically on this equation 0.622*thi*Pg(k)/101 - (Pg(k) *thi) the later Pg(k) is inputting wrong value for the iteration result in totally different w output
for at T = T(1,31), Pg(1,31) = 4.24520200417491
using calculator to find 0.622*thi*Pg(k)/101-(Pg(k)*thi) @ thi = 1 , should yield 0.02739 which matches with Psychrometric chart but instead on the array, w(1,31) = -4.21905828490168
I have been trying to work it out myself but just doesnt seem know why the equation is producing totally wrong answer...
so the final plot should look similar to this given ylim[ 0. 0.03] this was achieved by ploting
0.622*thi*Pg(k)/101 without having the problem code Pg(k)*thi) which was yielding totally wrong w value.
Could you see a problem?
Stephen23
Stephen23 el 22 de Mayo de 2020
Editada: Stephen23 el 22 de Mayo de 2020
I suspect that you need to add some parentheses to that line and use element-wise division:
w(:,k) = (0.622*thi*Pg(k)) ./ (101-thi*Pg(k));
% ^ ^ ^ ^ parentheses
% ^^ element-wise RDIVIDE
Giving:
>> (0.622*thi*Pg(31)) ./ (101-Pg(31)*thi)
ans =
0.0026254 0.0052731 0.0079433 0.010636 0.013352 0.016092 0.018855 0.021643 0.024454 0.027291
For thi=1 this gives a value of 0.027291. I have no idea how you got 0.02739.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by