Error with ode23
Show older comments
I searched a solution for some time and it seems that I was doing everything right but the error
Error using odearguments (line 110) Inputs must be floats, namely single or double.
Keeps appearing. Any ideas what I am doing wrong with ode23?
Tc = 60/72;
Ts = (2/5)*Tc;
R=1.05;
C=1.066;
syms ti q
IO = solve(90-int(q * (sin(pi*ti/Ts)),ti,0,Ts),q);
IO = subs(IO, 3.14, pi);
sine = @(t) sin (pi*t/Ts);
i = @(t) IO * sine(t).*(t <= Ts);
for n=1:5
if (n==1)
P_ss2 = 80;
end
t = (n-1)*Tc:0.01:n*Tc;
I = @(t) IO *sine(t-(n-1)*Tc).*(t <= ((n-1)*Tc+Ts));
z2 = @(t,y2) (-y2/(R*C)+I(t)/C);
[t_m2, P_m2] = ode23(z2, [(n-1)*Tc n*Tc], P_ss2);
P_ss2 = P_m2(end);
end
Accepted Answer
More Answers (2)
Torsten
on 17 Mar 2016
0 votes
Mixing of symbolic and numeric variables is not allowed when using ode23: z2 must be a function handle of a purely numeric expression (which is not the case for I(t)).
Best wishes
Torsten.
Aida Naranjo
on 12 Jan 2019
You should put double() in the function, I have a similar code and it works.
z2 = @(t,y2) double((-y2/(R*C)+I(t)/C));
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!