I'm doing a project and when I run my code, instead of MATLAB plotting the results after every time-step, it's only plotting the end result. I tried using the wait and timeout function but was unsuccessful. If anyone could help me put a 0.5 sec delay so MATLAB has the chance to plot that would be great!

 채택된 답변

Matt Fig
Matt Fig 2011년 5월 12일

2 개 추천

Do you call PLOT after every time-step? After every time-step, call PLOT then cal DRAWNOW. You can also call PAUSE with a time-to-pause argument, but I doubt this is what you really want to do with your code.

추가 답변 (1개)

Sean de Wolski
Sean de Wolski 2011년 5월 12일

1 개 추천

pause(0.5)

댓글 수: 14

Doug Hull
Doug Hull 2011년 5월 12일
To flush the graphics queue, DRAWNOW is preferred.
Zach
Zach 2011년 5월 12일
thank you!
Sean de Wolski
Sean de Wolski 2011년 5월 12일
Yes, but if only drawnow is used then it'll still zip right through and show only the end result. Hence is they want to see each time point, a pause() is still necessary.
Sean de Wolski
Sean de Wolski 2011년 5월 12일
x = 1:10;
y = x.^2;
figure;
hold on
for ii = 1:10
plot(x(ii),y(ii),'r*');
drawnow;
pause(0.5) %comment me to see the difference
end
Matt Tearle
Matt Tearle 2011년 5월 12일
Well, it's not showing only the end result, it's just that it's too quick for the eye to catch the intermediate steps.
Sorry, I'm a pedant. But the bottom line is correct: use drawnow to flush the queue *and* (usually) pause to control the animation timing.
Matt Fig
Matt Fig 2011년 5월 12일
Also, it would depend on what the user meant by timestep. I was picturing a lengthy calculation that would allow for more of a natural pause using DRAWNOW.
Also, setting the axis limits at the start is always a good idea for these types of things!
x = 1:10;
y = x.^2;
figure;
axis([0 10 0 100])
hold on
for ii = 1:10
plot(x(ii),y(ii),'r*');
sort(rand(3000)); % Simulate lengthy calculation
drawnow;
end
Matthew Simoneau
Matthew Simoneau 2011년 5월 12일
FYI, I opened up a related discussion in a new question: http://www.mathworks.com/matlabcentral/answers/7309-is-pause-a-superset-of-drawnow
Jiro Doke
Jiro Doke 2011년 5월 12일
@Matt Tearle,
I don't believe that "it's just too quick for the eye". I think it's because of the event queue issue. In other words, if you were to record the screen with a high-speed camera, you probably still won't be able to see the intermediate plots.
Unfortunately, I don't have a high-speed camera handy so I can't verify...
Matt Fig
Matt Fig 2011년 5월 12일
@Jiro and Matt Tearle,
I can see the intermediate plots if the ax-lims are held before the loop! Perhaps I need a faster computer...
Jiro Doke
Jiro Doke 2011년 5월 12일
@Matt Fig,
You mean without "drawnow"??
@Matt Tearle,
Darn hidden comments. I think I didn't see the whole thread of comments, so I thought you were referring to the OP's question, not to Sean's comment.
Matt Fig
Matt Fig 2011년 5월 12일
@Jiro,
I mean the code I pasted in comment 6, but without the call to SORT. It is fast, but I definitely see it changing...
My new laptop should be here tomorrow, so I may not see it then.
Jiro Doke
Jiro Doke 2011년 5월 12일
@Matt Fig,
Oh, I see. Yeah, I also see it with the drawnow. The question is whether it's updating faster than 30 Hz. My monitor refreshes at 60 Hz, so Nyquist frequency is 30.
Matt Tearle
Matt Tearle 2011년 5월 13일
Thanks, Jiro. I think you've just made a business case for me needing a new computer... :)
Ghenam Dahmane
Ghenam Dahmane 2022년 11월 4일
thanks so match

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

카테고리

도움말 센터File Exchange에서 Graphics Performance에 대해 자세히 알아보기

태그

질문:

2011년 5월 12일

댓글:

2022년 11월 4일

Community Treasure Hunt

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

Start Hunting!

Translated by