Confusion on event function
Show older comments
Hi all, I want to incorporate an event into my ode45 code. The event is that every time the value y reaches 1 (initial condition 0) it should stop integrating and must restart from zero. I will share the code I have written below. Looks fine, but I am not able to understand how it works. Actually where did I set the event in this code? (I was just imitating a code given in the documentation). If it works for N=1, I need to generalise it for large number of systems. Will that be possible?
N=1;
m=0.3;
%Initial values
ystart=zeros(N,1);
options = odeset('Events',@SpikeEvents,'RelTol',1e-5,'AbsTol',1e-4);
%ODE solver
[t,y,te,ye,ie]=ode45(@ELIF,tspan,ystart,options);
%Plotting
plot(t,y)
xlabel('time')
ylabel('voltage')
title('Leaky IF with spike reset')
%Defining event
%Defining event
function [value,isterminal,direction] = SpikeEvents(t,y)
value = y(1);
isterminal = 1; % Stop the integration
direction = 1;
end
%Defining the system of equations
function dydt=ELIF(t,y,m)
N=1;
m=0.3;
dydt=zeros(N,1);
for i=1:N
dydt(i)=-y(i)+m; %The model equation
end
end
Accepted Answer
More Answers (1)
Vipin Padinjarath
on 30 Oct 2018
1 vote
12 Comments
Walter Roberson
on 30 Oct 2018
No, just use the last element of your current tspan variable, the point where you would want to end anyhow.
Vipin Padinjarath
on 30 Oct 2018
Vipin Padinjarath
on 14 Nov 2018
Vipin Padinjarath
on 3 Dec 2018
Edited: Vipin Padinjarath
on 3 Dec 2018
Walter Roberson
on 3 Dec 2018
Edited: Walter Roberson
on 3 Dec 2018
why loop to N and have the if? Why not loop to N-1 ?
You would not even need to loop just vectorize.
Walter Roberson
on 3 Dec 2018
value = y - 1;
would appear to provide testing for all of the systems .
Vipin Padinjarath
on 3 Dec 2018
Vipin Padinjarath
on 3 Dec 2018
Walter Roberson
on 3 Dec 2018
no loop just
value = y - 1;
Vipin Padinjarath
on 7 Dec 2018
Walter Roberson
on 8 Dec 2018
Edited: Walter Roberson
on 12 Dec 2018
y-1
if you want to test all of the y values at the same time which is what I have interpreted your question about simultaneous systems to be .
Vipin Padinjarath
on 12 Dec 2018
Categories
Find more on Programming 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!