Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器
MATLAB的定时器功能(timer函数):
1 从MATLAB6.5版本开始,MATLAB开始支持定时器。相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显示更多pause无法实现的功能,一些需要在一定周期内独立运行的程序特别适合利用定时器来完成。
2 一个完整的定时器程序并让它发挥作用,一直到最后删除需要以下几个步骤:
第一,利用timer函数建立定时器
第二,利用start函数启动定时器
第三,利用stop函数停止定时器
第四,利用delete函数删除定时器
第五,利用clear函数删除代表定时器句柄的变量。
3 定时器具体是个什么东西?
我们知道,程序运行是自上而下,从左向右的运行方式,除了像while或者for循环控制流之外,程序运行到最末行整个程序就会停止运行。从本质上来说while或for循环控制流也是自上而下,从左向右的运行方式,条件为假停止运行退出。但是我们平时操作一些程序的时候,举个例子:比如我们玩儿一款游戏叫“王者荣耀”,如果我们能看到他的代码,其运行方式也是自上而下,从左向右的运行方式,但是全部运行完毕了,这个游戏还是正常在运行并没有停止。这也就是说,这个游戏运行程序的时候,整个程序到了结尾处再从头开始运行,如此循环往复,指导我们给定一个条件会停止整个循环往复,这也就实现了程序的整个动态运行。其在MATLAB当中要实现整个功能我们称之为定时器。
4 第一,利用timer函数建立定时器
timer函数的调用结构非常的简单,只是一个简单的句柄函数加属性的方式,但是其属性稍微多一些。
t = timer(name,value);
在有的材料上也可以写成,都是一会儿事儿。
t = time('PropertyName1',PropertyValue1,...,'PropertyNameN',PropertyValueN);
其中t为定时器的句柄变量
name或者PropertyName为属性名
value或者PropertyValue为属性值
这样一个定时器就建立好了。剩下的工作就是用t这个句柄来进行开关删的操作。
4.1 举例:
TimerA=timer('timerfcn',@TimerFunA,'StartDelay',0.5,'executionmode','fixedrate');
有这么一个定时器。
TimerA为这个定时器的句柄变量
timer中的属性和值分别解释如下:
1) 'timerfcn' ===>>> @TimerFunA
属性:定时器回调函数 值:@TimerFunA
2)'StartDelay' ===>>> 0.5
属性:定时器从开始运行到第一次执行TimerFcn直接的时间延迟,单位是秒 值:0.5
3)'executionmode' ===>>> 'fixedrate'
属性:定时器执行模式 值:在MATLAB中添加计时器回调函数后立即启动
4.2 其中我们看到其定时器的建立非常简单,但是其中的属性值略多,现在就把常用的属性和可选值进行列举一下:
属性名: 属性描述 : 可选值: 备注:
1.TimerFcn 定时器回调函数 字符串,函数句柄 设置循环函数,timer会循环调用该公式
或者cell数组 通常用@句柄的形式调用一个写好的函数
上面的例子就是这样
2.StartDelay 指定定时器从开始运行到第一次 任何大于等于0的double型数值
执行TimerFcn之间的时间延迟, 默认是0秒
单位是秒 当属性'Running'设为'on'时只读
3.ExecutionMode 定时器的执行模式 singleshort 这三种模式图示见MATLAB的doc
fixedDelay singleShot
fixedRate fixedDelay
fixedspacing fixedRate
fixedspacing
4.Period 设置循环时间间隔,即隔多长时间 任何大于0.001的double型数值
循环一次。 默认值是1.0
当属性'Running'设为'on'时只读
5.TasksToExecute 指定定时器需要执行TimerFcn函数的次数 设置循环次数。设置为inf,表示无线循环,默认为1
6.TasksToExecuted 从定时器开始运行时其,记录TimerFcn调 任何大于等于0的double型数值
用的次数,TimerFcn每执行一次, 默认值为1
TasksToExecuted自动加1 始终是只读型
5 第二,利用start函数启动定时器
第三,利用stop函数停止定时器
start(TimerA);start(TimerB);
stop(TimerA);
很简单吧。
6. 关于TimerFcn中的@回调函数的编写
function f_trade_timer3
% 主程序定时器
TimerA=timer('timerfcn',@TimerFunA,'StartDelay',0.5,'executionmode','fixedrate');
start(TimerA);
function TimerFunA(obj,event)
global main market order risk
if (main.timenum>150000 & main.timenum<153000) | (main.timenum>023000 & main.timenum<030000)
path_trade_data=[pwd,'\data\d_future\d_future_trade\'];
eval(['save ',path_trade_data,'d_future_trade3.mat market order ']);
stop(TimerA);
end
end
end
比如这么一段定时器的编写,控制大于某一个时间段,保存数据到路径,然后停止计时器。
其中@TimerFunA句柄了这么一个函数,所以定时器编写的时候后面一般要加上这么一个函数
这个函数的编写略有不同,如果是单一的TimerFunc函数的话要按照obj对象和event事件的方式进行起函数名。因为这里是用的对象句柄的方式
类似于 @ TimerFunA , (obj,event)
再比如这么一段代码
t=timer('TimerFcn',{@timercallback,handles},'ExecutionMode', 'fixedRate', 'Period', 0.01);
start(t)
function timercallback(obj, event,handles)
str=datestr(now, 'HH:MM:SS:FFF');
set(handles.edit1, 'String',str);
Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器的更多相关文章
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2
1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...
- Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)
1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1
1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题
1 我们知道MATLAB支持并行运行一般有四种模式: 第一种模式:本机调用多核CPU性能并行运算 第二种模式:本机调用GPU性能并行运算 第三种模式:多计算机组成集群,调用集群CPU性能并行运算 第四 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-利用GPU并行执行MATLAB程序
1 MATLAB原文: 如果所有你想使用的函数支持GPU,你能够使用gpuArray把输入的数据传输到GPU,也能够唤起gather命令把传输值GPU的数据回收. 2 通过gpuDevice命令观察当 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_全局变量的妙用_遍历穿透
1 比如我这边写了一个函数,这个函数中有一个变量作为参数,给定这个参数一个值,然后这个函数返回给我一个值.但是,我写这函数的时候,这个传参我不写到函数里面.可以通过全局变量的方式进行在外部穿透遍历. ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题
1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...
- Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换
1.相关方法已经生产引用,直接调用的结果如下: 2. 相关调用代码如下: using System; using System.Collections.Generic; using System.Li ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换
Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...
随机推荐
- kubernter相关内容
1. Kubernetes 第一章:互联网架构的演变 随着1946年世界上第一台电子计算机的问世网络就随之出现了,只不过当初只是为了解决多个终端之间的连接,这就是局域网的雏形.后来,随着美国国防部高级 ...
- HDU - 1200 To and Fro
题意:给定一个,其实是由一个图按蛇形输出而成的字符串,要求按从左到右,从上到下的顺序输出这个图. 分析: 1.把字符串转化成图 2.按要求输出图= = #include<cstdio> # ...
- 4 ~ express ~ 划分模块开发
一,根据功能进行模块划分 1,前台模块 2,后台管理模块 3,API模块 二,使用 app.use() 进行模块划分 1,app.use('/',require('./router/main')) 1 ...
- Spring AOP 基本的使用
1. jar包 2.全局配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...
- java课程之团队开发冲刺阶段2.8
昨日总结: 1.具体情况已经写在了昨天的当日总结当中 遇到的问题: 1.toolbar的返回键与菜单键冲突,导致无法同时使用 今天的任务: 1.完整实现课程查询任务 当日总结: 1.完整实现,唯一的遗 ...
- 用Python分析淘宝2000款避孕套,得出这些有趣的结论
数据分析之前我们需要清楚的知道自己想要分析什么东西,也就是先搞清楚我们的目标.在公司可能是公司财报.用户增量变化.产品受欢迎程度.一些报表等等. 那我们今天的目标有哪些呢?我们来看看: ! 分析避孕套 ...
- Learning Combinatorial Embedding Networks for Deep Graph Matching(基于图嵌入的深度图匹配)
1. 文献信息 题目: Learning Combinatorial Embedding Networks for Deep Graph Matching(基于图嵌入的深度图匹配) 作者:上海交通大学 ...
- ✨vue引入组件 axios和icont矢量图标
axios 在vue项目开发中,我们使用axios进行ajax请求,很多人一开始使用axios的方式,会当成vue-resoure的使用方式来用,即在主入口文件引入import VueResource ...
- promise核心技术 1 实例对象/函数对象
一个程序员要在看到代码的语法同时判断数据类型 知道语法是基础 基础才能延伸功能 //一行代码 a()[0]() // a() 首先推断出a是一个函数 //a()[0] 判断a函数的返回值是一个数组 ...
- xv6 系统调用
1. 系统调用的实现 开发程序需所有的接口在user.h中,包含两部分system call和ulib user.h中的系统接口函数在usys.S中通过汇编实现 #define SYSCALL(nam ...