Confusion on event function
显示 更早的评论
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
采纳的回答
更多回答(1 个)
Vipin Padinjarath
2018-10-30
1 个投票
12 个评论
Walter Roberson
2018-10-30
No, just use the last element of your current tspan variable, the point where you would want to end anyhow.
Vipin Padinjarath
2018-10-30
Vipin Padinjarath
2018-11-14
Vipin Padinjarath
2018-12-3
编辑:Vipin Padinjarath
2018-12-3
Walter Roberson
2018-12-3
编辑:Walter Roberson
2018-12-3
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
2018-12-3
value = y - 1;
would appear to provide testing for all of the systems .
Vipin Padinjarath
2018-12-3
Vipin Padinjarath
2018-12-3
Walter Roberson
2018-12-3
no loop just
value = y - 1;
Vipin Padinjarath
2018-12-7
Walter Roberson
2018-12-8
编辑:Walter Roberson
2018-12-12
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
2018-12-12
类别
在 帮助中心 和 File Exchange 中查找有关 Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!