How to manualy break a for loop but continue with the rest of matlab code execution?
이전 댓글 표시
How to manually break a for loop in matlab during execution so that the program get out of loop and continue the rest of the code after the for loop?
I define a for loop for 2000 iterations. Each iteration needs to perform an expensive function evaluation for a few minutes which give me a new point (x,y) to dynamically update my line plot. I am going to dynamically plot (x,y) points. Whenever the user decides not to continue with the for loop based on the shape of the dynamic plot, he /she should be able to break the loop and continue with next piece of codes comes after the loop. Note that Ctr+C just kills all the codes.
댓글 수: 1
David Young
2014년 7월 28일
Is it acceptable for the user to be asked whether or not to continue each time the end of the loop is reached?
채택된 답변
추가 답변 (2개)
Robert Cumming
2014년 7월 28일
You can do it all in your loop:
h = figure;
ax = axes( 'parent', h, 'nextplot', 'add', 'xlim', [0 200] );
x = [1:2000];
y = nan(1,2000);
for i=1:2000;
drawnow()
if ~ishandle ( h ); break; end
y(i) = rand(1);
plot ( x, y, 'rs-' );
end
fprintf ( 'user exited after %i iterations\n', i );
% continue your code
Obviously this deletes your plot after the loop - but the idea is that you have a figure (could be a msgbox...) which the user can use to interrupt the process. The for loop breaks when this figure handle is no longer valid (i.e. its been deleted).
댓글 수: 1
Patrik Ek
2014년 7월 28일
Great solution. The problem is only that the code becomes less flexible than if an own callback function is generated. For example it would be possible to save the figure before closing in a callback. It would also be possible to keep the figure using a global variable exitThisForLoop (I know globals are in general bad, but in this case it is far simpler than any other solution). However, this solution is really simple and that is always good.
Julia
2014년 7월 28일
0 개 추천
See "break" and "return" in the Matlab help.
댓글 수: 2
David Young
2014년 7월 28일
Isn't the essence of the question about how to manage the user interaction?
Patrik Ek
2014년 7월 28일
I think so too, and return returns from the function, which is not what is expected.
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!