Error in ode45 using odearguments: "Inputs must be floats, namely single or double"
Ältere Kommentare anzeigen
Hello everyone. I am trying to use the ode45 function to solve a system of differential equations to solve for the first process of a Kalman Filter estimator, but after looking up for the error in other forum posts and also trying to understand a bit more of the ode45 solver, I really can't seem to find what is the cause of the error I am getting:
Error using odearguments (line 110)
Inputs must be floats, namely single or double.
Error in ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
Error in Estimator (line 130)
[t,estx] = ode45(odefun1,[estState.tm estState.tm+dt],estState.xm');
These are the pieces of code I believe are relevant to the error in question:
syms p_x p_y s_x s_y phi b u_r u_t vr vd vb wa wb wc wg wn
...
estState.q=[s_x;s_y; cos(phi)*(tanh(u_t)-estState.C_d*(s_x^2+s_y^2)*(1+vd)); sin(phi)*(tanh(u_t)-estState.C_d*(s_x^2+s_y^2)*(1+vd)); estState.C_r*u_r*(1+vr); vb];
....
odefun1 = @(t,estx) xder(t,estx,estState.q,actuate);
[t,estx] = ode45(odefun1,[estState.tm estState.tm+dt],estState.xm');
xp=estx(end,:)';
...
function dxdt = xder(t,estx,q,actuate)
syms p_x p_y s_x s_y phi b u_r u_t vr vd vb
q1=subs(q, [vr vd vb], [0 0 0]);
q1=subs(q1, [u_t u_r], [actuate(1) actuate(2)]);
dxdt = subs(q1, [p_x p_y s_x s_y phi b], estx');
end
And before getting to the ode45 call, the variables have the following values:
estState.xm' =
0
0
0
0
0
0
ans =
0.1000
dt =
0.1000
actuate =
0.0623 0.0078
Any ideas, help or suggestions would be extremely welcome of course. Thank you
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!