zoukankan      html  css  js  c++  java
  • matlab中drawnow更新图窗并处理回调

    来源:https://ww2.mathworks.cn/help/matlab/ref/drawnow.html?searchHighlight=drawnow&s_tid=doc_srchtitle

    本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

    drawnow

    更新图窗并处理回调

    全页折叠
     

    说明

    示例

    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
    

    如果要执行长时间的计算,预计算数据可以提高性能。通过不间断计算,预计算能最大地缩短计算时间。此外,它还通过仅关注动画循环中的图形代码来帮助确保平滑的动画。

     

    详细信息

    全部折叠

    等效于 drawnow 的操作

    这些操作等效于调用完整的 drawnow 命令:

    提示

    • nocallbacks 选项始终都向队列中添加中断回调。如果您想要丢弃中断回调,则改用 InterruptibleBusyAction 属性。

  • 相关阅读:
    C语言中的排序算法--冒泡排序,选择排序,希尔排序
    常见算法:C语言求最小公倍数和最大公约数三种算法
    提高软件测试效率的方法探讨
    面试官询问的刁钻问题——以及如何巧妙地应付它们
    软件测试面试--如何测试网页的登录页面
    如何衡量测试效率,如何提高测试效率!
    利用交叉测试提升软件测试效率
    交叉测试的必要性和遇到的问题
    敏捷测试
    HttpWatch工具简介及使用技巧
  • 原文地址:https://www.cnblogs.com/MCSFX/p/11867012.html
Copyright © 2011-2022 走看看