• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Matlab中Timer的使用 - febird

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  鉴于Matlab中缺乏多线程机制,使用Timer无疑是一个很重要的工具,Matlab中Timer是一个Java对象。
 
   Timer的定义

   t=timer();

   设置属性:

  eg.   set(t,\'Name\',\'your_timer_name\');

  当然可以一次性设置完成:

  例如:

    TaskTimer=timer(...
    \'Name\',\'FebirdTimer\',...
    \'TimerFcn\',@ExecuteTask,...
    \'ErrorFcn\',@ExecuteError,...
    \'Period\',1,...
    \'ExecutionMode\',\'fixedrate\');  

  这里TimerFcn为Timer执行的函数,后面的 ‘@ExcuteTask’ 就是你定义的函数名
 同样 ErrorFcn也是一样。

  Period为执行周期,ExecutionMode为执行模式,fixedrate为固定频率。当然前面所说的都是在这个前提之上。

  关于TimerFcn的定义


  当以TimerFcn的定义默认必须有两个参数

  function ExcuteTask(obj,eventdata)
   % TODO
  end

  其中obj为执行该函数所对应的timer对象,eventdata为事件数据,一般里面为具体时间。

 当需要在ExcuteTask中传入参数的时候,那么Timer可以这样定义:

 set(t,\'TimerFcn\',{@ExecuteTask,var1});

 那么这时函数定义应该为:

 function ExcuteTask(obj,eventdata,var1)
   % TODO
 end

  其他函数的定义也类似。

  关于UserData



  UserData在Timer比较有用,因为当时用上面的方法传递参数是,Matlab只会在第一次传入参数。

  所以我们可以在UserData这个域中保存我们的数据

  例如
 
  t=[0]
  lh=plot(t,sin(t),\'-\');

   t=timer(...

   \'Name\',\'FebirdTimer\',...

   \'TimerFcn\',@ExecuteTask,...

   \'ErrorFcn\',@ExecuteError,...

   \'Period\',1,...

   \'ExecutionMode\',\'fixedrate\');

   ud=struct{\'linehanle\',lh,\'count\',0} ;

   set(t,\'UserData\',ud);


  function ExcuteTask(obj,eventdata)

    ud=obj.UserData;
    l=ud.linehandle;
    c=ud.count;
    t=get(l,\'XData\');
    y=get(l,\'YData\');
    t=[t count];
    y=[y sin(0.1*count)];
    set(lh,\'XData\',t,\'YData\',y);

   drawnow

   ud.count=ud.count+1;
   set(obj,\'UserData\',ud);


  end

以上给出了一个使用Timer画图的方法 

关于Timer的函数


 1.start();
 2.stop();
 3.timerfind();

 eg.删除所有的timer
 ts=timerfind;
 if length(ts)>0
 stop(ts);
 delete(ts);
 end

 通过Name查找特定的Timer:

 t=timerfind(\'Name\',\'FebirdTimer\');

  

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
常用的delphi 第三方控件 - 火山白水的DELPHI发布时间:2022-07-18
下一篇:
[转]Delphi 常用控件之TlistView总结发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap