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

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

被折叠的 条评论
为什么被折叠?



