Index exceeds number of array elements
Afficher commentaires plus anciens
when i run my code, it says index exceeds number of array elements. But i have used sum() which should by itself determine the array length, right? The final value of expression is a single integer which varies continuously in each iteration of loop.
Réponse acceptée
Plus de réponses (1)
Walter Roberson
le 30 Sep 2020
You have
Ef = (((Kad -(Aem*Kad(1+(((i-1)*sum(Cs,2))/K1s)))-(((i-1)*(sum(Cl,2)-Cl(1)-Cl(2)))/K1l)- (Cl(1)/KG1)- (Cl(2)/KG2)-1)) + ((((Kad -(Aem*Kad(1+(((i-1)*sum(Cs,2))/K1s)))-((i-1)*((sum(Cl,2)-Cl(1)-Cl(2))/K1l))- (Cl(1)/KG1)- (Cl(2)/KG2)-1))^2) + 4*Kad*((((i-1)*sum(Cl,2)-Cl(1)-Cl(2))/K1l)+(Cl(1)/KG1)+(Cl(2)/KG2)+1))^0.5)/(2*Kad*((((i-1)*sum(Cl,2)-Cl(1)-Cl(2))/K1l)+(Cl(1)/KG1)+(Cl(2)/KG2)+1));
That is a request to index the scalar Kad at offset (1+(((i-1)*sum(Cs,2))/K1s)) . That offset happens to be an integer that is greater than 1.
Reminder; MATLAB has absolutely no implied multiplication. When you see something of the form A(B) then it always means either invoking function A with parameter B, or else indexing array A with index B. It **never* means multiplying A by B. Not anywhere in MATLAB. Not even inside the internal programming language of the symbolic engine.
Catégories
En savoir plus sur Ordinary Differential Equations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!