Matlab 上的 Drawnow:它存储图形还是存储变量?

Drawnow on Matlab: It store the figure or store the variable?

你能帮我解决一个关于 Matlab 中 DRAWNOW 的问题吗?

当我们在Matlab中使用drawnow时,里面发生了什么?

它存储上一张图的图形,然后在同一图形上绘制下一部分图形?

或者它忘记了整个前一图并绘制了实际新图(包括前一部分和下一部分)?

两种方法显示相同的效果:一个动态图。但是我想知道里面到底发生了什么。

谢谢!

drawnow 确保 MATLAB 停止执行任何操作并在屏幕上绘制。

如果你这样做

hold on
for ii=1:1000
   plot(ii,rand(1)); % assume complicated maths here
end

MATLAB 将 运行 代码并将 plot 调用发送到图形引擎。但是,MATLAB 忙于 运行 循环绘制,因为代码优先于绘图。

如果你这样做

hold on
for ii=1:1000
   plot(ii,rand(1));
   drawnow; % Take a break, draw everything that you must before continuing
end

然后,正如评论所说,您暂时停止执行代码,绘制图形管道中的所有内容,然后继续执行代码。

drawnow对图形是否存储没有影响,那是hold on的工作。

如果您担心重绘整个事物,请确保查看图形的 setget 方法。通过它们,您可以 get xdata、修改它,然后再次 set,方法是确保图形引擎不会 redraw/recompute 任何其他内容。


hold 函数的文档:

https://uk.mathworks.com/help/matlab/ref/hold.html