主要内容

drawnow

更新数据和处理回调

描述

例子

drawnow更新的数据和过程任何等待回调。使用这个命令,如果你修改图形对象,希望立即看到屏幕上的更新。

例子

drawnow limitrate限制的数量更新到20帧每秒。如果它已经少于50毫秒自上次更新,或者图形渲染器正忙着与以前的变化,drawnow丢弃的新的更新。使用此命令如果你更新图形对象在一个循环中,不需要看到屏幕上的每一个更新。跳过更新可以创造更快的动画。等待回调处理,所以你可以与数据交互动画。

drawnow nocallbacks推迟回调,等ButtonDownFcn回调,直到下一个完整drawnow命令。使用这个选项,如果你想防止回调打断你的代码。推迟回调暂时禁用图交互,如鼠标点击或调整。推迟回调不影响动画速度。

drawnow limitrate nocallbacks限制的数量更新到20帧每秒,跳过更新如果渲染器是忙碌的。这个语法也可以防止回调打断你的代码,这暂时禁用图交互。

drawnow更新跳过更新如果渲染器忙,推迟回调。不推荐这种语法。使用limitrate选项。

drawnow暴露更新数据,但推迟回调。不推荐这种语法。使用nocallbacks选项。

例子

全部折叠

创建一个动画的直线增长积累2000数据点。使用drawnow每次迭代后在屏幕上显示的变化通过循环。

h = animatedline;轴([0 4π* 1 1])x = linspace(0, 4 * 2000(π);k = 1:长度(x) y = sin (x (k));addpoints (h, x (k), y);drawnow结束

创建一个动画的直线增长积累10000点。因为有10000点,在屏幕上绘制每个更新是缓慢的。创建一个更快,平滑的动画通过限制使用更新的数量drawnow limitrate。然后,在屏幕上显示最终的更新通过调用drawnow在循环结束后。

h = animatedline;轴([0 4π* 1 1])x = linspace(0, 4 * 10000(π);k = 1:长度(x) y = sin (x (k));addpoints (h, x (k), y);drawnowlimitrate结束drawnow

计算动画循环之前的所有数据。

h = animatedline;轴([0 4π* 1 1])x = linspace(0, 4 * 10000(π);y = sin (x);k = 1:长度(x) addpoints (h, x (k), y (k));drawnowlimitrate结束drawnow

如果你有长计算,预计算的数据可以提高性能。预计算减少了计算时间,让计算运行不中断。此外,它有助于确保顺利动画只关注图形代码的动画循环。

更多关于

全部折叠

的行为相当于drawnow

这些行动相当于调用一个满的drawnow命令:

提示

  • nocallbacks选择总是将打断回调函数添加到队列中。如果你想丢弃打断回调,然后使用可中断BusyAction属性来代替。

版本历史

之前介绍过的R2006a