你能帮我解决一个关于 Matlab 中 DRAWNOW 的问题吗?
当我们drawnow
在 Matlab 中使用时,里面发生了什么?
它存储前一个图形的图形,然后在同一个图形上绘制图形的下一个部分?
或者它忘记了整个前一个图并绘制了实际的新图(包括上一个和下一个部分)?
这两种方法都显示出相同的效果:动态图。但我想确切地知道里面发生了什么。
谢谢!
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
。
如果您担心重绘整个东西,那么请确保您查看了图形set
和get
方法。使用它们,您可以get
通过确保图形引擎不会重绘/重新计算其他任何东西来xdata
修改、修改它,然后再次修改它。set
该功能的文档hold
: