你可以帮我解决一下关于在Matlab上的DRAWNOW的问题吗?
当我们drawnow在Matlab中使用时,内部会发生什么?
它存储上一图的图形,然后在同一图上绘制下一部分图形?
或者它会忘记整个上一个图形并绘制实际新图形(包括前一个和下一个图形)?
这两种方法都表现出相同的效果:动态图.但我想确切地知道里面发生了什么.
谢谢!
drawnow 确保MATLAB停止执行任何操作并在屏幕上绘制.
如果你这样做
hold on
for ii=1:1000
plot(ii,rand(1)); % assume complicated maths here
end
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
然后,正如评论所说,您暂时停止执行代码,在图形管道中绘制所有内容,然后继续执行代码.
drawnow对于数字是否存储这一事实没有影响,这就是工作hold on.
如果您担心重绘整个事物,那么请确保您查看图形set和get方法.有了他们,你可以get的xdata,修改它,和set它再次,通过确保图形引擎不重绘/重新计算别的.
hold功能文档:
https://uk.mathworks.com/help/matlab/ref/hold.html
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |