Index exceeds matrix dimension in a for loop?

2 Ansichten (letzte 30 Tage)
lauuser1
lauuser1 am 3 Mär. 2016
Beantwortet: Stalin Samuel am 3 Mär. 2016
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.

Antworten (1)

Stalin Samuel
Stalin Samuel am 3 Mär. 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

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by