Why do I get "Array indices must be positive integers or logical values" in line 17

1 ビュー (過去 30 日間)
Omar Ahmad AL Bloushi
Omar Ahmad AL Bloushi 2021 年 11 月 21 日
回答済み: Srijith Kasaragod 2021 年 11 月 23 日
%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 件のコメント
DGM
DGM 2021 年 11 月 21 日
(i+l) is zero because both i and l are zero. Zero is not a valid array index.

サインインしてコメントする。

回答 (1 件)

Srijith Kasaragod
Srijith Kasaragod 2021 年 11 月 23 日
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.

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by