Index exceeds matrix dimension in a for loop?
2 views (last 30 days)
Show older comments
function[pos_N] = func(v_0, windspeed)
pos_N(1,1) = 0; %initial distance
pos_N(1,2) = 500; %initial elevation
%loop starts here
v = v_0;
theta = 20;
g = 9.81;
for t=0:0.1:1000
horiz_velocity = v*cos(theta)+windspeed;
vert_velocity = v_0*sin(theta)+g*sin(theta)*t;
row_number = 1+10*t;
if t==0
else
pos_N_(row_number,1) = pos_N((row_number-1),1)+horiz_velocity*0.1; %position horizontal
pos_N_(row_number,2) = pos_N((row_number-1),2)-vert_velocity*0.1; %elevation decreases because he descends down
... and there is more to the code but at those last two lines, the code has the error "index exceeds matrix dimension".
Why? I have not defined any set size for the matrix pos_N.
0 Comments
Answers (1)
Stalin Samuel
on 3 Mar 2016
function[pos_N] = func(v_0, windspeed)
pos_N = zeros(max(1+10*(0:0.1:1000)),2);%matrix initialization
pos_N(1,1) = 0; %initial distance
pos_N(1,2) = 500; %initial elevation
%loop starts here
v = v_0;
theta = 20;
g = 9.81;
for t=0:0.1:1000
horiz_velocity = v*cos(theta)+windspeed;
vert_velocity = v_0*sin(theta)+g*sin(theta)*t;
row_number = round(1+10*t);
if t==0
else
pos_N_(row_number,1) = pos_N((row_number-1),1)+horiz_velocity*0.1; %position horizontal
pos_N_(row_number,2) = pos_N((row_number-1),2)-vert_velocity*0.1; %elevation decreases because he descends down
0 Comments
See Also
Categories
Find more on Matrix Indexing 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!