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!