MATlab code line doesnt run

1 view (last 30 days)
Oskar Kinat
Oskar Kinat on 31 Mar 2021
I am having the following MATlab code and keep running into the error of my xdot(i) line.
Error: Check for missing argument or incorrect argument data type in
call to function 'R'.
Error in 360Second (line 14)
xdot(i)=[x(3);x(4);-u*x/R(i)^3;-u*y/R(i)^3];
can you please check if you see anything else wrong with it after I fix that error.
a= 7000;
e= 0.1;
time= (60*60*24);
u= 3.986*10^5;
dt=0.1;
t=(0:.1:86400);
Rp= a*(1-e);
Vp=sqrt(u*(2/Rp-1/a));
x=zeros(4);
x=[Rp;0;0;Vp];
i=1;
while t(i)<=86400
xdot(i)=[x(3);x(4);-u*x/R(i)^3;-u*y/R(i)^3];
x=x+xdot*dt;
i=i+1
R(i)=sqrt(x(1)^2+x(2)^2);
V(i)=sqrt(x(3)^2+x(4)^2);
E(i)=V(i)^2/2-u/R(i);
end
plot(R,t);
plot(V,t);
plot(E,t);
title('random'), xlabel('random'), ylabel('random');
grid on
  7 Comments
Oskar Kinat
Oskar Kinat on 31 Mar 2021
I' am sorry I just added the y=0 I believe thats right.
a= 7000;
e= 0.1;
time= (60*60*24);
u= 3.986*10^5;
dt=0.1;
t=(0:.1:86400);
y=0;
R= [Rp,0];
Rp= a*(1-e);
Vp=sqrt(u*(2/Rp-1/a));
x=zeros(4);
x=[Rp;0;0;Vp];
i=1;
while t(i)<=86400
R(i)=sqrt(x(1)^2+x(2)^2);
xdot(i)=[x(3);x(4);-u*x/R(i)^3;-u*y/R(i)^3];
x=x+xdot*dt;
i=i+1
V(i)=sqrt(x(3)^2+x(4)^2);
E(i)=V(i)^2/2-u/R(i);
end
plot(R,t);
plot(V,t);
plot(E,t);
title('random'), xlabel('random'), ylabel('random');
grid on

Sign in to comment.

Answers (1)

Neeraj Rajpurohit
Neeraj Rajpurohit on 7 Apr 2021
DISCLAIMER: These are my own views and in no way depict those of MathWorks.
Greetings,
I see that you are accessing arrays R, V and E, without initialization in the line .To make the given script work, you will have to do the initialization of these variables. Also, to access the variables with indices, you will have to preallocate the arrays with appropriate sizes.

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!