I am marking my naive approach commented above as the answer for now.
ODE event: Is there a counter ?
14 次查看(过去 30 天)
显示 更早的评论
Siddhartha Harsha Ommi
2021-3-19
回答: Siddhartha Harsha Ommi
2021-4-15
Hi, Is there a way to terminate after an event occurs a certain number of times? I am thinking of using a counter in the ODE event function. But I am not sure how to pass it as an argument to the event function.
Thank you,
Sid
0 个评论
采纳的回答
更多回答(1 个)
Kiran Felix Robert
2021-3-22
Hi Siddhartha,
You don’t have to pass the counter as an argument to the event function, you can define the count variable as a global variable (persistent) and increment/decrement it, while not terminating the integration, until the control arrives at a count to terminate the integration.
The following snippet can be used as an example, for 10 events.
function [value,isterminal,direction] = Eventsfcn(t,y)
persistent count;
if isempty(count)
count = 10;
end
if count > 1
% Your code here
count = count - 1;
isterminal = 0; % Do not stop the integration
else
% Your Code here
isterminal = 1; % Stop the integration
end
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!