Matlab中drawnow函数的使用
目录
drawnow函数的功能是更新图窗并处理回调。
语法
drawnow
drawnow limitrate
drawnow nocallbacks
drawnow limitrate nocallbacks
drawnow update
drawnow expose
说明
drawnow更新图窗并处理任何挂起的回调。如果修改图形对象并且需要在屏幕上立即查看这次更新,请使用该命令。
drawnow limitrate将更新数量限制为每秒 20 帧。如果自上次更新后不到 50 毫秒,或图形渲染器忙于处理之前的更改,则drawnow会丢弃新的更新。如果在循环中更新图形对象并且不需要在屏幕上查看每个更新,请使用该命令。跳过更新可以产生更快的动画。挂起的回调得到处理,这样您可以在动画期间与图窗交互。
drawnow nocallbacks会延迟回调(例如ButtonDownFcn回调),直至下个完整的drawnow命令执行。如果您想要阻止回调中断您的代码,请使用该选项。暂时延迟回调会禁用图窗交互,例如点击鼠标或调整图窗大小。延迟回调不会影响动画速度。
drawnow limitrate nocallbacks将更新数量限制为每秒 20 帧,如果渲染器繁忙则跳过更新。此语法还可以阻止回调中断您的代码,这样会暂时禁用图窗交互。
如果渲染器繁忙,drawnow update会跳过更新并延迟回调。不建议使用该语法。改用limitrate选项。
drawnow expose更新图窗但延迟回调。不建议使用该语法。改用nocallbacks选项。
示例
创建流数据动画
创建一个线条不断变长的动画,直到它累积到 2,000 个数据点。使用drawnow在每次循环迭代后将更改显示在屏幕上。
h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,2000);
for k = 1:length(x)
y = sin(x(k));
addpoints(h,x(k),y);
drawnow
end
跳过更新以产生更快的动画
创建一个线条不断变长的动画,直到它累积到 10,000 个点。由于存在 10,000 个点,在屏幕上绘制每个更新比较慢。通过使用drawnow limitrate限制更新数量创建更快、更平滑的动画。然后,通过在循环结束后调用drawnow在屏幕上显示最终更新。
h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,10000);
for k = 1:length(x)
y = sin(x(k));
addpoints(h,x(k),y);
drawnow limitrate
end
drawnow
预计算数据,然后创建动画
在动画循环之前计算所有数据。
h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,10000);
y = sin(x);
for k = 1:length(x)
addpoints(h,x(k),y(k));
drawnow limitrate
end
drawnow
如果要执行长时间的计算,预计算数据可以提高性能。通过不间断计算,预计算能最大地缩短计算时间。此外,它还通过仅关注动画循环中的图形代码来帮助确保平滑的动画。
提示
-
nocallbacks 选项始终都向队列中添加中断回调。如果想要丢弃中断回调,则改用 Interruptible 和 BusyAction 属性。
相关文章
- MATLAB中deg2rad和rad2deg函数的使用
- MATLAB中polarplot函数使用
- MATLAB中subplot函数的使用
- Matlab中semilogy函数使用
- Matlab中repelem函数的使用
- Matlab中conv函数的使用
- Matlab中intmax函数的使用
- Matlab中xticks函数
- Matlab中legend函数使用
- Matlab中func2str函数的使用
- Matlab中dec2base函数使用
- Matlab中yyaxis函数的使用
- MATLAB中findsignal函数使用
- MATLAB中finddelay函数使用
- 【MATLAB教程案例77】WSN网络覆盖率问题与matlab仿真
- 【MATLAB教程案例57】使用matlab实现RCNN,FastRCNN以及FasterRCNN网络目标检测功能与仿真分析
- 【MATLAB教程案例20】关于优化类算法的改进方向探索及matlab仿真对比分析
- 【MATLAB教程案例1~10总结】通信类matlab仿真经验和技巧总结
- 基于窗函数的FIR滤波器的matlab设计与实现
- 【Matlab小问题】matlab启动时出现Warning: Name is nonexistent or not a directory
- 【Matlab 六自由度机器人】关于灵活工作空间与可达工作空间的理解(附MATLAB推导代码)
- 四、Matlab 之 常见函数的使用
- MATLAB调用Python自定义函数(类、函数等)& Python调用MATLAB
- Matlab匿名函数