I'm trying to plot data on two different figures within a loop. When I do this, the computer flashes between the two figures in each iteration, which slows down the program considerably. Is there a way to hide the figures until the loop is finished?
for i = 1:100
...
figure(1)
plot(data1, data2)
figure(2)
plot(data1, data3)
end

1 件のコメント

Monowar Hossain
Monowar Hossain 2022 年 8 月 17 日
Here, what is the point of looping ?

サインインしてコメントする。

 採用された回答

Patrick Kalita
Patrick Kalita 2011 年 7 月 14 日

7 投票

Calling the figure command will cause the graphics queue to flush (basically like a drawnow call). That's what is slowing the program down. Instead of calling figure, you can get the same effect -- without the implicit drawnow -- by setting the root's CurrentFigure property:
f1 = figure;
f2 = figure;
for i = 1:100
...
set(0, 'CurrentFigure', f1)
plot(data1, data2)
set(0, 'CurrentFigure', f2)
plot(data1, data3)
end

その他の回答 (1 件)

Sean de Wolski
Sean de Wolski 2011 年 7 月 14 日

0 投票

Yes; build you data1-3 vectors inside the loop and then plot once after it.

カテゴリ

ヘルプ センター および File Exchange で Creating, Deleting, and Querying Graphics Objects についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by