I am running time-dependent simulations with variable time-step size dt in seconds. I have implemented a while-loop that updates the elapsed time t_elapsed as t_elapsed + dt and stops when t_elapsed > t_total where t_total is a predefined number in seconds. Now I want to output the solution (a vector) to a text file at every x seconds, i.e. every 3600 seconds. This problem throws me of my game a bit as dt is now variable. Any help is much appreciated.
Arjan

 채택된 답변

dpb
dpb 2020년 3월 16일

0 개 추천

Either compute the number of timesteps corresponding to your dt and desired frequency if dt is constant and output every N timesteps:
N=Tout/dt;
if mod(iterNo,N)==0
fprintf(fid,data)
end
or, alternatively, test the time variable modulo Tout is within dt. ismembertol might be of interest here for floating point comparisons.

댓글 수: 1

Arjan Marelis
Arjan Marelis 2020년 3월 16일
dpb,
thank you. The ismembertol function solves the problem!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2020년 3월 16일

댓글:

2020년 3월 16일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by