Telling MATLAB to wait

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!

 Accepted Answer

Matt Fig
Matt Fig on 12 May 2011

2 votes

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.

More Answers (1)

pause(0.5)

14 Comments

Doug Hull
Doug Hull on 12 May 2011
To flush the graphics queue, DRAWNOW is preferred.
Zach
Zach on 12 May 2011
thank you!
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.
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
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 on 12 May 2011
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
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 on 12 May 2011
@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 on 12 May 2011
@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 on 12 May 2011
@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 on 12 May 2011
@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 on 12 May 2011
@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.
Thanks, Jiro. I think you've just made a business case for me needing a new computer... :)
thanks so match

Sign in to comment.

Categories

Find more on Graphics Performance in Help Center and File Exchange

Tags

Asked:

on 12 May 2011

Commented:

on 4 Nov 2022

Community Treasure Hunt

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

Start Hunting!