Error with ode23
Afficher commentaires plus anciens
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
Réponse acceptée
Plus de réponses (2)
Aida Naranjo
le 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));
Catégories
En savoir plus sur Startup and Shutdown dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!