永发信息网

matlab r2014a 定时器timer在哪?

答案:2  悬赏:0  手机版
解决时间 2021-02-18 03:04
matlab r2014a 定时器timer在哪?
最佳答案
timer是一个函数,具体使用方法如下:
(1) 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 为固定频率。当然前面所说的都是在这个前提之上。

(2) 关于TimerFcn 的定义

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

function ExcuteTask(obj,eventdata)
% TODO
end

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

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

那么这时函数定义应该为:
function ExcuteTask(obj,eventdata,var1)
% TODO
end

其他函数的定义也类似。

(3) 关于UserData

UserData 在Timer 比较有用,因为当时用上面的方法传递参数是,Matlab 只会在第一次传入参数。
所以我们可以在UserData 这个域中保存我们的数据。

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

t=timer(...
'Name','MyTimer',...
'TimerFcn',@ExecuteTask,...
'ErrorFcn',@ExecuteError,...
'Period',1,'TasksToExecute',100,...
'ExecutionMode','fixedrate');

ud=struct('linehandle',lh,'count',0);
set(t,'UserData',ud);

start(t);

function ExecuteTask(obj,eventdata,UserData) ;
ud=obj.UserData;
l=ud.linehandle;
c=ud.count;
t=get(l,'XData');
y=get(l,'YData');
t=[t c];
y=[y sin(0.1*c)];
set(ud.linehandle,'XData',t,'YData',y);
drawnow; %一般放置在set命令后,用于重构刷新图形。
ud.count=ud.count+1;
set(obj,'UserData',ud);
end

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

(4) 关于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');

例如:

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

tb= timer('Name','ButtonTimer','StartDelay', 4,'Period', 4,'TasksToExecute', 2,...
'ExecutionMode','fixedRate');
tb.StartFcn = {'my_callback_fcn', 'My start message'};
tb.StopFcn = { @my_callback_fcn, 'My stop message'};
tb.TimerFcn = @(x,y)disp('Hello World!');
start(tb);

% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

tb=timerfind('Name','ButtonTimer');
if length(tb)>0
stop(tb);
delete(tb);
end

function my_callback_fcn(obj, event, string_arg)%传入参数,前两个为默认参数
%其中event.Type为回调函数类型,event.Data为回调函数数据
txt1 = ' event occurred at ';
txt2 = string_arg;
event_type = event.Type;%get type
event_time = datestr(event.Data.time);%get timer period
msg = [event_type txt1 event_time];
disp(msg)
disp(txt2)
end

以上给出了通过GUI button 按钮来控制timer开始和终止的方法。
全部回答
我。。知。。道 加。。我。。私。。聊
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我打工5年了,一直没有什么作为,想做点小生
请教:磁盘IO使用率怎么看
一前的乡镇邮电局现在叫什么名子
文华布艺总汇地址在哪,我要去那里办事
众源建材模板这个地址在什么地方,我要处理点
在别人给淘宝店的评论下评论,怎么显示淘宝昵
如果追一个女孩子,她如果不喜欢你,你还追不
我的电脑有时能开机,但有时开的时候风扇转一
眉骨高很自卑怎么办?
【车架总成】以下哪个不是车架总成大修送修标
难得遇上一个让我心动的女孩,她很活泼、很可
300分在南昌能上怎样的大专
作文 我心中的英雄蔺相如
墨概念装饰地址在哪,我要去那里办事
对于三角形连接的电动机过载保护,当热继电器
推荐资讯
工商银行催款是先抓人还是先起诉
耶鲁印象在哪里啊,我有事要去这个地方
提篮菜馆在哪里啊,我有事要去这个地方
青州市黄楼街道卢李村民委员会我想知道这个在
护宫福用8个小时有用吗
溪坪怎么去啊,有知道地址的么
关于周期性健康检查不正确的理解是A.应用格式
【高一英语】一道填空题---Will you tell us
恒信汽车交易中心这个地址在什么地方,我要处
缓男什么意思
我的电脑开机后,一直显示图像自动调整,,该
流动青年的定义和外来务工人员是同一个意思吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?