Why do I get "Array indices must be positive integers or logical values"?
3 views (last 30 days)
Show older comments
I am trying to graph Thrust vs Mach number. I took posted all the parts that are related to the error message
clc
clear
close all
Ta = 504;
y = 1.4;
Ra = 1716;
for M = .1:.1:5
u(M) = M.* sqrt(y.*Ra.*Ta);
disp(u)
end
The error I get is "Array indices must be positive integers or logical values. Error in test (line 10) u(M) = M.* sqrt(y.*Ra.*Ta);" Can someone shine some light on what I am doing wrong?
0 Comments
Accepted Answer
Cris LaPierre
on 6 Mar 2023
Edited: Cris LaPierre
on 6 Mar 2023
Your values of M are not valid indices for u. Your indices must be integer values >=1.
A=1:5;
% This works because the index is a positive integer
A(2)
% This does not work because the index is a decimal number
A(0.2)
The most robust solution would be to create a vector M, and then have your for loop loop through each element of M, with the loop counter being used assign the result to u.
M = .1:.1:5;
for v = 1:length(M)
u(v) = M(v).* sqrt(y.*Ra.*Ta);
disp(u)
end
Even better would be to get rid of the loop altogether.
M = .1:.1:5;
u = M.* sqrt(y.*Ra.*Ta)
More Answers (1)
Torsten
on 6 Mar 2023
Ta = 504;
y = 1.4;
Ra = 1716;
M = .1:.1:5;
for i = 1:numel(M)
u(i) = M(i)*sqrt(y*Ra*Ta);
end
plot(M,u)
or simply
Ta = 504;
y = 1.4;
Ra = 1716;
M = .1:.1:5;
u = M*sqrt(y*Ra*Ta);
plot(M,u)
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements 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!