Why do I get "Array indices must be positive integers or logical values" in line 17
1 view (last 30 days)
Show older comments
%prameters
L = 160
w = 1000 * 2 * pi/60
r = 60
N = 100
th0 = 0
thl = 180
dth = (thl - th0)/N
q=r/L
l = 0
%calculation
for i = 0:1:N
th = (th0 + i * dth) * pi/180;
phi = asin (q * sin(th));
dphidt = w * q * cos(th)/sqrt(1 - (q * sin(th))^2);
vD (i + l) = w * r * sin(phi + th)/cos(phi);
wBD(i + l) = -w * r * cos(th)/(L * cos(phi));
aD(i + l)= w * r * ((cos(phi) * cos(phi + th) * (w + dphidt) - sin(phi) * sin(phi + th) * dphidt)/cos(phi)^2);
alBD (i + l) = -w * q * ((-cos(phi) * sin(th) * w + sin(phi) * cos(th) *dphidt)/cos(phi)^2);
end
figure
plot ((th0:dth:thl) , wBD , (th0:dth:thl) , alBD/100 ,'lineWidth', 2);
xlabel ('\theta ({\circ})') ;
legend ('\omega_{BD} (rad/s)','\alpha_{BD} (10^2 rad/s^2');
axis ([th0 thl - inf inf]);
figure
plot ( [th0:dth:thl] , vD/10 , [th0:dth:thl] , aD/1000 , 'LineWidth' , 2 );
xlabel ('\theta ({\circ})');
legend ('v_D (10^1 in/s)','a_D (10^3 in/s^2)');
axis ([tho thl - inf inf]);
N = 100
thl = 180
N = 100
clc
1 Comment
Answers (1)
Srijith Kasaragod
on 23 Nov 2021
Hi Omar,
When for loops begins execution, loop variable 'i' is initialized to 0. Also variable 'l' is 0. Hence array index 'i+l' returns 0 which is not valid array indexing in MATLAB. Array indexing in MATLAB starts at 1.
Regards.
0 Comments
See Also
Categories
Find more on Function Creation 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!