Subscript indices error when plotting

1 view (last 30 days)
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.

Accepted Answer

Roger Stafford
Roger Stafford on 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.
  1 Comment
Vidhan Malik
Vidhan Malik on 20 Mar 2016
ah it was having problems with the index not the value assigned to it, okay makes sense, thanks!

Sign in to comment.

More Answers (1)

John D'Errico
John D'Errico on 20 Mar 2016
Edited: John D'Errico on 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 Comments
Vidhan Malik
Vidhan Malik on 20 Mar 2016
thanks! Yeah for some reason I was associating the word indices with some else entirely.
Vidhan Malik
Vidhan Malik on 20 Mar 2016
Just wondering if you could continue your help from before. How do you return a variable back to being a variable after you previously have defined it?
As in if A1=54 in the first loop and now for the second iteration of the loop, I want it being a variable again.
I think one way would be to move where I defined the equations to before the loop, but what if I had some reason not to? How would I go about un-defining a variable?

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!