Greetings. I'm trying to find a way to use event-based ode insidea class as the code below:
The equation is more omplex and I'm using this instance for simplicity, the error I get is the same
classdef ODEevent < handle properties tstart = 0; tend = 5; end methods function odeObj = ODEevent() % Instance of the class
end function [value, isterminal, direction] = odeEvent(this, x) x_des = x; value = x_des - 1; isterminal = 1; direction = 0; end function solveODE(this) tspan = [this.tstart this.tend]; x0 = 0; odeOpts = odeset('Events', @this.odeEvent); [t, x] = ode45(@(t,x) 2*t, tspan, x0, odeOpts); end endend
The error I'm getting is:
Error using ODEevent/odeEventToo many input arguments.Error in ODEevent>@(varargin)this.odeEvent(varargin{:}) (line 22) odeOpts = odeset('Events', @this.odeEvent);Error in odeevents (line 28) eventValue = feval(eventFcn,t0,y0,eventArgs{:});Error in ode45 (line 148) odeevents(FcnHandlesUsed,odeFcn,t0,y0,options,varargin);Error in ODEevent/solveODE (line 23) [t, x] = ode45(@(t,x) 2*t, tspan, x0, odeOpts);
Thanks in advane
Regards
Best Answer