Subscript indices error when plotting
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Roger Stafford
2016 年 3 月 20 日
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 件)
John D'Errico
2016 年 3 月 20 日
編集済み: John D'Errico
2016 年 3 月 20 日
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. :)
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!