输入参数太多Matlab ode45

时间:2016-04-04 08:07:59

标签: matlab input arguments projectile ode45

我正在尝试编写一个简单的Matlab代码来模拟抛射物。每当我尝试运行代码时,我都会收到错误消息,说输入参数太多了。我正在使用

运行代码

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);

我很感激任何建议!

1 个答案:

答案 0 :(得分:1)

错误是(我过去多次提交过的)你必须传递自变量(在这种情况下是时间)。

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

我修改了你的代码以返回解决方案和相应的时间步骤。此外,我删除了ball作为嵌套函数。