关于Matlab的Drawow:它存储数字还是存储变量?

时间:2017-02-20 10:26:46

标签: matlab plot drawnow

请你帮我解决一下关于在Matlab上的DRAWNOW的问题?

当我们在Matlab中使用drawnow时,内部会发生什么?

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

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

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

谢谢!

1 个答案:

答案 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的工作。

如果您担心重绘整个内容,请确保查看图形的setget方法。有了它们,您可以get xdata,修改它,再次set,确保图形引擎不会重绘/重新计算任何其他内容。

hold函数的文档:

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