Matlab——Timer对象(多线程编程)计时器

本文介绍了如何在MATLAB中利用Timer对象和回调函数创建动态画圆的动画效果。通过详细步骤解析了Timer的使用,包括回调函数的特点,如默认参数和多参数调用方式。示例中,回调函数CircleTask每秒更新一次,逐步绘制圆的一部分,最终形成动画。文章还展示了创建和启动Timer对象的完整代码,并解释了时间转换的细节。

Timer对象和 Dynamic关于Timer的教程。

相信大家对Timer对象的各个属性和其字段有一定了解,更多的信息可在帮助文件中获得。
这里再总结一下,仔细看Timer对象的句柄我们可以发现,Timer其实由两部分构成:
(一)对象本身的一些属性,如ExecutionMode等
(二)回调函数(Call Back Function)

对于第一点,Timer对象实质上与结构体一样,只需要掌握每个属性及其字段名即可。
可见Timer实现相关功能主要集中在回调函数上。那么与普通函数相比,回调函数有哪些不同呢?

1.有默认的入参obj和event。这一点一定要注意,在编写回调参数时一定要在函数名末尾加(obj,event),否则出错。
2.当有其他入参时,函数调用形式发生变化,需写在同一元胞数组中。
这两点详见Dynamic帖子第三部分,这里仅仅予以强调。

接下来我将试图以一个例子,用最最直白的语言告诉大家,尼玛,这玩意到底怎么用。

这是一个画圆的脚本:

alpha=0:pi/20:2*pi;%角度[0,2*pi]
R=2;%半径
x=R*cos(alpha);
y=R*sin(alpha);
plot(x,y,'o-') %画图
axis equal %平衡坐标轴

那么如果我想做一个动画,让这个圆每隔一段时间画一点点,应该怎么画呢?
这无疑要用到多线程控制。及我们介绍的Timer 对象。

首先将上述脚本改编成回调函数TimeFcn:(本例中取名为CircleTask)

function CircleTask(obj,event)
event_time = datestr(event.Data.time);   %使用event对象的data的time属性获得系统当前时间,并转换成字符串
d=event_time(19:20);   %由于本身保存的是年月日小时分钟秒,但我只需要秒的数据,因此单独取出
d=str2double(d); %将字符串转换成数字
alpha=0:pi/20:pi/20*d;%角度[0,2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打工人_青柠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值