matlab timer怎样传递参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab timer怎样传递参数相关的知识,希望对你有一定的参考价值。

参考技术A 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');本回答被提问者采纳

以上是关于matlab timer怎样传递参数的主要内容,如果未能解决你的问题,请参考以下文章

无法通过参数传递 Timer.sheduledTimer [重复]

使用 timeit.Timer() 时如何传递函数的参数

ActionScript 3 在指定的延迟后调用函数并传递参数 - 不使用Timer()

怎样给lua脚本传递参数和脚本怎样接受这些参数

jqgrid怎样传递参数???

ASP中怎样传递参数