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
的工作。
如果您担心重绘整个事物,请确保查看图形的 set
和 get
方法。通过它们,您可以 get
xdata
、修改它,然后再次 set
,方法是确保图形引擎不会 redraw/recompute 任何其他内容。
hold
函数的文档:
你能帮我解决一个关于 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
的工作。
如果您担心重绘整个事物,请确保查看图形的 set
和 get
方法。通过它们,您可以 get
xdata
、修改它,然后再次 set
,方法是确保图形引擎不会 redraw/recompute 任何其他内容。
hold
函数的文档: