1

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

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

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

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

这两种方法都显示出相同的效果:动态图。但我想确切地知道里面发生了什么。

谢谢!

4

1 回答 1

7

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


该功能的文档hold

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

于 2017-02-20T10:33:18.193 回答