2016-04-04 11 views
0

Bir mermiyi modellemek için basit bir Matlab kodu yazmaya çalışıyorum. Kodu çalıştırmayı denediğimde, çok fazla giriş argümanı olduğunu söyleyen bir hata alıyorum. BenÇok Fazla Giriş Değişkenleri Matlab ode45

MODEL1 (44.7, 45)

function[] = model1(vel, angle) 
close all; 
tspan = [0 3]; 
x0 = [0; 0.915; vel*cos(angle); vel*sin(angle)]; 
[x] = ode45(@ball, tspan, x0); 

function xdot = ball(x) 
g = 9.81; 
xdot = [x(3); x(4); 0; -g]; 

end 
end 

Error using model1/ball 
Too many input arguments. 

Error in odearguments (line 87) 
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0. 

Error in ode45 (line 115) 
    odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, 
    varargin); 

Error in model1 (line 9) 
[x] = ode45(@ball, tspan, x0); 

Ben herhangi bir tavsiye takdir ediyorum ile kod çalıştırıyorum!

+1

[ode45] 'e bakın (http://se.mathworks.com/help/matlab/ref/ode45.html),' odefun ',' t 've' x 'olmak üzere iki giriş yapar. x'. –

cevap

1

Hata, bağımsız değişkeni (bu durumda da zaman) geçmeniz gereken (geçmişte birçok defa da yaptıklarım) idi.

function [t, x] = model1(vel, angle) 
tspan = [0 3]; 
x0 = [0; 0.915; vel*cos(angle); vel*sin(angle)]; 
[t, x] = ode45(@ball, tspan, x0); 

end 

function xdot = ball(t,x) 
g = 9.81; 
xdot = [x(3); x(4); 0; -g]; 
end 

Çözümü ve ilgili zaman adımlarını döndürmek için kodunuzu değiştirdim. Dahası, yuvalanmış bir işlev olarak ball'u kaldırdım.

+0

Teşekkürler! Bu benim problemimi çözdü! – Olivia