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