What is drawnow doing?

8 views (last 30 days)
Alessandro Masullo
Alessandro Masullo on 13 Nov 2015
Hello everyone.
I'm working on a code where I need to alternate the display of two complex plots in a very short time. The time for creating each plot is quite high (4-5 seconds) and I want to alternate them with a lag of 0.1 seconds. Creating a new plot every 0.1 seconds is therefore completely useless.
My idea was to create the two plots in two different axes and alternate the visibility of them. The problem is that drawnow keeps taking a very long time just to show one axes instead of the other.
Is there any way I can speed up this process?
Example of code:
figure
x1 = rand(100000,1);
y1 = rand(100000,1);
x2 = rand(100000,1);
y2 = rand(100000,1);
t = tic;
delay = 0.5;
flag = 0;
while 1
if toc(t) > delay
if flag
plot(x1,y1,'.')
flag = 0;
else
plot(x2,y2,'.')
flag = 1;
end
drawnow
end
end

Answers (1)

Walter Roberson
Walter Roberson on 13 Nov 2015
Edited: Walter Roberson on 14 Nov 2015
figure
x1 = rand(100000,1);
y1 = rand(100000,1);
x2 = rand(100000,1);
y2 = rand(100000,1);
p1 = plot(x1,y1,'.', 'visible', 'off');
p2 = plot(x2,y2,'.', 'visible', 'off');
t = tic;
delay = 0.5;
flag = 0;
while 1
if toc(t) > delay
if flag
set(p2, 'visible', 'off');
set(p1, 'visible', 'on');
flag = 0;
else
set(p1, 'visible', 'off');
set(p2, 'visible', 'on');
flag = 1;
end
drawnow
end
end
  9 Comments
Alessandro Masullo
Alessandro Masullo on 18 Nov 2015
Someone suggested me to set opengl to software many months ago, because of a bug that I was experiencing with surf.
I don't remember the exact post, but it was something like this issue: http://www.mathworks.com/matlabcentral/answers/52943-mesh-or-surf-display-problem-on-windows-7
It happened on a previous version of matlab. So far I haven't experienced the bug on the R2015a.

Sign in to comment.

Categories

Find more on Graphics Performance in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!