I am marking my naive approach commented above as the answer for now.
ODE event: Is there a counter ?
7 ビュー (過去 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
参考
カテゴリ
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!