Subscript indices error when plotting
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Vidhan Malik
le 20 Mar 2016
Commenté : Vidhan Malik
le 20 Mar 2016
Running a relatively simple code to plot 2 variables against each other.
clear;clc;
syms A1 B2
R=0.5;
Cp=0.5;
Cv=0.3;
i = 0;
while Cv<1.11
i = i + 0.01;
Cv= Cv + 0.01;
R = Cv^2*((1/Cv-tan(A1))^2 - (tan(B2))^2)/2/(1-Cv*tan(A1) - Cv*tan(B2));
Cp = 1 - (tan(B2)/(1/Cv - tan(A1)))^2;
[A1,B1] = vpasolve([R, Cp], [A1,B2]);
SWR = 1 - Cv*(tan(A1) + tan(B2));
X(i,2) = Cv;
Y(i,2) = SWR;
end
plot(X(:,2),Y(:,2),'g-');
hold on
And the error I get is as following
Subscript indices must either be real positive integers or logicals.
Error in gasturbine_hw7 (line 22)
x(i,2) = Cv;
I think the error is due to Cv not being an integer but how do I make a matrix and call individual values from it that aren't integers without receiving that error message?
My end goal here is to plot Cv on the X axis and SWR on the Y axis.
0 commentaires
Réponse acceptée
Roger Stafford
le 20 Mar 2016
This is your problem:
X(i,2) = Cv;
Y(i,2) = SWR;
Matlab is objecting to the fact that 'i' is being used as an index, but its value is not a positive integer. You need to revise your code so that the index value in X and Y is a positive integer.
Plus de réponses (1)
John D'Errico
le 20 Mar 2016
Modifié(e) : John D'Errico
le 20 Mar 2016
Why should CV be a problem here? What variable is a subscript? i is a variable. What values does i take on?
i = 0;
...
i = i + 0.01;
X(i,2) = Cv;
Y(i,2) = SWR;
Now read the error message again. You cannot use a non-integer number (or any zero or negative integer) as an index.
Think of it like this: Where would MATLAB store the 0.01 element of a vector? It might get a little tight between elements at times. :)
2 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!