フィルターのクリア

"Index exceeds matrix dimensions."

1 回表示 (過去 30 日間)
Mauro De Francesco
Mauro De Francesco 2017 年 9 月 26 日
回答済み: KSSV 2017 年 9 月 26 日
Hello, I'm having a problem with this code
%%DATA
%Starting Point
R_I = [-5.5106881000000003e+03 1.5889450000000002e+03 5.8383016000000007e+03];
V_I = [-3.8639999999999999e+00 -6.5410000000000004e+00 -1.2840000000000000e+00];
%Planet
mi = 398600;
equat_Rt = 6378.1363;
polar_Rt = 6356.7523142;
%%COMPUTIING
t_0 = 0.1;
t_f = 100000;
options = odeset('Reltol',1e-13,'Abstol',1e-14,'Event',@closed_orbit);
X_0 = [R_I(1); R_I(2); R_I(3); V_I(1); V_I(2); V_I(3)];
[T,X] = ode113(@orbit_dynamics,[t_0 t_f],X_0,options,mi,R_I);
The function orbit_dynamics is this one
function [dX] = orbit_dynamics(X,mi,varargin)
x = X(1);
y = X(2);
z = X(3);
u = X(4);
v = X(5);
w = X(6);
% Position derivative is velocity
dx = u;
dy = v;
dz = w;
% Velocity derivative is acceleration
R = [x,y,z];
norm_R = norm(R);
du = -mi/norm_R^3 * x;
dv = -mi/norm_R^3 * y;
dw = -mi/norm_R^3 * z;
% Terminating data
dX = [dx dy dz du dv dw]';
end
The error that Matlab gives is
Index exceeds matrix dimensions.
Error in orbit_dynamics (line 4)
y = X(2);
Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode113 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
Error in orbit_motion (line 18)
[T,X] = ode113(@orbit_dynamics,[t_0 t_f],X_0,options,mi,R_I);
I ran the debug and it seems that when it enters the function orbit_dynamics, the vector X turns in a 1x1 vector, can anyone help me with that?
  1 件のコメント
Mauro De Francesco
Mauro De Francesco 2017 年 9 月 26 日
Solved the problem. The function should have been
function [dX] = orbit_dynamics(t,X,mi,varargin)
notice the t. If there is no explicit time dependency (autonomous system) however, you can replace t with ~. Hope this helps someone.

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

採用された回答

KSSV
KSSV 2017 年 9 月 26 日
Change the function:
[dX] = orbit_dynamics(X,mi,varargin) ;
to
[dX] = orbit_dynamics(t,X,mi,varargin) ;

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by