Clear Filters
Clear Filters

Unable to perform assignment

2 views (last 30 days)
Michael Käufl
Michael Käufl on 13 Jan 2020
Answered: Walter Roberson on 14 Jan 2020
Hello Guys,
I've got this error message every time: Index exceeds the number of array elements (1).
Error in Neu_HTU>@(T_H2O,h_Luft)cp_H2O*Massenstromverhaeltnis*(1+(X_sat(i)-X(i))*cp_H2O*T_H2O(i)./Ch(i)) (line 112)
f1 = @(T_H2O,h_Luft) cp_H2O * Massenstromverhaeltnis *(1+(X_sat(i)-X(i))*cp_H2O*T_H2O(i)./Ch(i));
Error in Neu_HTU (line 114)
l1 = f1((T_H2O(i) ),(h_Luft(i) ));
Can anybody help me?
Cheers Michael
for i=1:ceil(T_H2O_aus/h) % calculation loop
T_H2O(i+1) = T_H2O(i)+h;
X_sat(i) = 0.622 * p_sat_Antoine(T_H2O(i))/(p - p_sat_Antoine(T_H2O(i)));
h_Luft_sat(i) = (cp_Luft + cp_Dampf * X_sat(i)) * (T_Luft_unten -273.15) + X_sat(i) * h_verdampfung;
A(i) = 0.865^(2/3)*(((0.622+X_sat(i))./(0.622+X(i))-1)/(log((0.622+X_sat(i))./...
(0.622+X(i)))));
Massenstromverhaeltnis = M_H2O_ein/M_Luft*(1 - M_Luft/M_H2O_ein*(X_oben-X(i)));
Ch(i) = h_Luft_sat(i) - h_Luft(i) + (A(i)-1)*(h_Luft_sat(i) - h_Luft(i) - (X_sat(i) - X(i)).*...
(h_verdampfung + cp_Dampf*T_H2O(i))) - (X_sat(i) - X(i)).*cp_H2O.*T_H2O(i);
%Funktion 1
f1 = @(T_H2O,h_Luft) cp_H2O * Massenstromverhaeltnis *(1+(X_sat(i)-X(i))*cp_H2O*T_H2O(i)./Ch(i));
l1 = f1((T_H2O(i) ),(h_Luft(i) ));
l2 = f1((T_H2O(i) + 0.5*h),(h_Luft(i) + 0.5*h*l1));
l3 = f1((T_H2O(i) + 0.5*h),(h_Luft(i) + 0.5*h*l2));
l4 = f1((T_H2O(i) + h),(h_Luft(i) + h*l3));
h_Luft(i+1) = h_Luft(i) + h/6*(l1+2*l2+2*l3+l4);
%Funktion 2
f2 = @(T_H2O,X) cp_H2O * Massenstromverhaeltnis * ((X_sat - X)./Ch);
k1 = f2((T_H2O(i) ),(X(i) ));
k2 = f2((T_H2O(i) + 0.5*h),(X(i) + 0.5*h*k1));
k3 = f2((T_H2O(i) + 0.5*h),(X(i) + 0.5*h*k2));
k4 = f2((T_H2O(i) + h),(X(i) + h*k3));
X(i+1) = X(i) + h/6*(k1+2*k2+2*k3+k4);
%X_result = X(i+1);
end

Answers (1)

Walter Roberson
Walter Roberson on 14 Jan 2020
T_H2O(i+1) = T_H2O(i)+h;
Okay, you are growing the vector T_H2O as you go, and if T_H2O(i) did not exist then you would not have gotten past that line. So we know that afterwards T_H2O(i+1) will exist.
f1 = @(T_H2O,h_Luft) cp_H2O * Massenstromverhaeltnis *(1+(X_sat(i)-X(i))*cp_H2O*T_H2O(i)./Ch(i));
This function accepts a parameter that for the purposes of the expression will be called T_H2O . This parameter will not necessarily have anything to do with the vector T_H2O that we established above will have at least at least i+1 elements. You need to mentally re-write the line as something like
f1 = @(FirstParameter,SecondParameter) cp_H2O * Massenstromverhaeltnis *(1+(X_sat(i)-X(i))*cp_H2O*FirstParameter(i)./Ch(i));
Whatever first parameter you pass in is going to be indexed at i.
l1 = f1((T_H2O(i) ),(h_Luft(i) ));
You extract a single element from T_H2O and pass that as the first parameter to f1, passing in a scalar there. But f1 wants to access that scalar at index i.

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!