error in ode45 - must return column vector

This is to simulate the response of a single degree of freedom system.
script
function [ xdot ] = sdof( t, x)
xdot = zeros(2,3);
xdot(1) = x(2);
xdot(2) = -2/3*x(1)-(1/3)*x(2);
end
command window
>> t0 = 0; tf = 20; %-- start and end time
>> x0 = [0 0.25]; %-- initial conditions
>> [t,x] = ode45('sdof',[t0 tf],x0); %-- call ODE45 solver
Error using odearguments (line 90)
SDOF must return a column vector.
Error in ode45 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
>> plot(t,x);
Undefined function or variable 't'.

Respuestas (1)

Star Strider
Star Strider el 4 de Oct. de 2014
Editada: Star Strider el 4 de Oct. de 2014
Replace the preallocation line with:
xdot = zeros(2,1);
and you’re good to go.
Note: in R2014a, I needed to change the ode45 call to:
[t,x] = ode45(@sdof,[t0 tf],x0); %-- call ODE45 solver
Then it worked perfectly.

2 comentarios

Chase
Chase el 4 de Oct. de 2014
Perfect thanks so much!!!
Star Strider
Star Strider el 4 de Oct. de 2014
My pleasure!
The most sincere expression of gratitude here on MATLAB Answers is to Accept the Answer that most closely solves your problem.

Iniciar sesión para comentar.

Preguntada:

el 4 de Oct. de 2014

Comentada:

el 4 de Oct. de 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by