背景

使用MATLAB洗数据的时候,偶尔会有时间计算的需求。根据经验整理了三种可能遇到的情况并附实现程序。

首先先介绍一下MATLAB中时间量的一些概念。对一个时间点,MATLAB有3种表示方式。

1. 字符串表示。直接以字符串表示时间,如 '20:56:01' '20:59:24' 等,比较直观,且格式可指定,但无法用于时间计算。

2. 数组表示。以固定六位数组表示一个时间点,如2022年1月1日20:56:01以数组表示为

date = 2022    1    1    20    56    1

可以用于部分计算,但该数组中各个元素长度不相等,表示不够美观。

3. 数值表示。计算指定时间与一个固定时间的天数之差,以这个数值形式的差值表示一个时间点。如 '20:56:01' 可表示为(由于未指定日期,所以MATLAB会给该时间一个默认的日期)

date =7.3852e+05

这种表示方法的好处是可以用来进行时间计算,但看起来非常不直观。

基于这3种格式,有3个函数可以进行时间格式的转换。分别为

datestr()  % 将另两种时间格式转为字符串格式
datevec()  % 将另两种时间格式转为数组格式
datenum()  % 将另两种时间格式转为数值格式

下面以实例介绍用法。

1. 生成等间隔的时间序列(字符串格式)

例如,现想要以30s为间隔生成同一天的 '20:56:01' 到 '21:03:24' 两个时间点之间的时间序列,并以字符串的格式保存下来。程序实现如下

t_start = datenum('20:56:01');  % 将开始时间的字符串转换为数值
t_end = datenum('20:59:24');  % 将结束时间的字符串转换为数值
dt = 1/24/120;  % 序列的时间间隔为30s,一天有24小时,一小时有120个30s,所以是1/24/120
T = t_start:dt:t_end;  % 生成等间隔的时间数值
dv = datestr(T,'HH:MM:SS');  % 将该数值序列转换为时间字符串,格式为‘时:分:秒’,各两位

输出得到

dv =7×8 char 数组'20:56:01''20:56:31''20:57:01''20:57:31''20:58:01''20:58:31''20:59:01'

成功生成了30s间隔的时间序列。可以使用string()函数将dv转为字符串。

上述程序中,datenum函数用于将时间字符串转为数值,这样才能用于30s间隔的时间计算。格式为

DateNumber = datenum(DateString,formatIn)

其中,DateString为要转换的字符串,formatIn为该字符串对应的格式。若DateString为

 '20:56:01' 

则formatIn为

'HH:MM:SS'

意为将时、分、秒三个单位以冒号间隔,每个单位占两位。如果DateString为

'20/56/01'

则formatIn对应要改为

'HH/MM/SS'

其余格式可参考MATLAB文档 。在时间序列生成完毕后,可使用datestr将其转为字符串格式便于查看。格式为

DateString = datestr(Date,formatOut)

其中,Date为要转换的时间数值,formatOut指定转换后的字符串以什么格式输出。

2. 计算两个时间点之间的时间差

例如,现想要计算同一天 '20:56:01' 到 '20:59:24' 两个时间点之间的时间差,单位为秒。此时使用etime()函数即可,程序实现如下

t_start = datevec('20:56:01');  % 将开始时间的字符串转换为数组
t_end = datevec('20:59:24');  % 将结束时间的字符串转换为数组
dt = etime(t_end,t_start);  % 计算两个时间点之间差了多少秒

3. 已知一个时间点和时间差,求另一个时间点

例如,现想要计算 '20:56:01' 这个时间点过了720秒后的时间,程序实现如下

t_start = datetime('20:56:01');  % 将开始时间的字符串转换为时间点
duration = 720;  % 时间差,单位为秒
t_end = t_start + seconds(duration);  % 计算过了720秒之后的时间

其中,seconds()用于将一个数值转换为秒对象。

MATLAB时间计算相关推荐

  1. matlab中计算运行时间的函数,【谁能都我一个计算时间的函数?是计算:例如上午08:00...-计算时间的函数-数学-伊凡渴同学...

    概述:本道作业题是伊凡渴同学的课后练习,分享的知识点是计算时间的函数,指导老师为干老师,涉及到的知识点涵盖:[谁能都我一个计算时间的函数?是计算:例如上午08:00...-计算时间的函数-数学,下面是 ...

  2. matlab 计算 工程,matlab工程计算.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab matlab工程计算.doc167页 本文档一共被 ...

  3. 电力系统matlab实验报告,基于matlab语言计算电力系统暂态稳定仿真程序实验报告.docx...

    基于matlab语言计算电力系统暂态稳定仿真程序实验报告 BeijingJiaotongUniversity 电力系统分析 暂态稳定分析实验 学院:电气工程学院 班级:xxxxxxxx 学号:xxxx ...

  4. matlab实时系统时间,转--MATLAB——时间,日期及显示格式

    MATLAB--时间,日期及显示格式 (https://www.cnblogs.com/ruo-li-suo-yi/p/7507063.html) 一.日期和时间 1.生成指定格式日期和时间 标准日期 ...

  5. 编写matlab语句计算试题,MATLAB测验考试题

    <MATLAB测验考试题>由会员分享,可在线阅读,更多相关<MATLAB测验考试题(12页珍藏版)>请在装配图网上搜索. 1.一.填空题1.在MATLAB中,清除所有变量的命令 ...

  6. matlab 安装出来封面就没了,基于Matlab的计算报告书封面生成方法及计算机存储介质与流程...

    本发明涉及一种计算报告书封面生成方法及计算机存储介质,特别是涉及一种基于Matlab的计算报告书封面生成方法及计算机存储介质. 背景技术: 技术人员在采用Matlab大型矩阵计算软件进行工程计算等科研 ...

  7. Matlab 将计算结果制作成 gif 动画

    Matlab 将计算结果制作成 gif 动画 引言 求解包含时间的偏微分方程 (组) 将得到随着时间变化的数值结果, 把这样的数据制作成 gif 动画并结合到幻灯片中, 在毕业答辩.小组讨论.课堂教学 ...

  8. 使用MATLAB快速计算Khatri-Rao积

    使用MATLAB快速计算Khatri-Rao积 Khatri-Rao积介绍 方法介绍 代码 结果验证 总结 Khatri-Rao积介绍 方法介绍 若采用循环的方式逐列计算Kronecker积,当矩阵的 ...

  9. python和matlab计算速度对比_【转载】Fortran与Matlab的计算速度对比(Code by myself)...

    http://blog.163.com/zpfzcjndx@126/blog/static/6354568120135196735577/ 最近一直在计算向量式有限元的膜单元,笔者真心给Matlab的 ...

最新文章

  1. go语言中没有隐藏的this指针
  2. Linux下的基本命令详解,Linux基本命令详解-1.0
  3. 要让玩家买单的facebook中文网
  4. e-mobile帐号状态存在异常_企业微信添加好友提示”操作异常”怎么办?
  5. 企业五大模式,多看两遍你就懂了
  6. Qt输入输出之QProcess
  7. DataTable转换成List
  8. SpringBoot→初始化项目just run@SpringBootApplication、请求处理@RequestMapping、属性配置yml
  9. c++ while(condition) 中condition的一些思考
  10. 左耳朵耗子:996不是福气,但努力就会成功么?
  11. TMC2300-LA 低压、超静音微型步进电机驱动器
  12. 网站怎么移动适配?这些小技巧你必须要会
  13. java计算机毕业设计济南旅游网站源码+mysql数据库+系统+lw文档+部署
  14. 一个简单的Perl脚本求单条序列的GC含量
  15. PL3376C-ASEMI电源管理芯片PL3376C
  16. C语言编写程序求1到100的和,C语言菜鸟基础教程之求1到100的和
  17. 去水印的手机APP哪个好用,怎么一键去水印
  18. spring的 init-method和 destory-method方法
  19. Web性能测试基本性能指标及案例分析
  20. 计算机有效教学案例分析,中职计算机应用基础有效教学案例分析.doc

热门文章

  1. x什么意思c语言新闻视频视频ok,c语言第x章函数重庆交大版.ppt
  2. wireshark插件 - 建立可以正常工作的解析器
  3. secoclient-linux安装
  4. 如何让网页上的Flash视频在弹出窗口中播放
  5. 【python-07】
  6. 数字医生与平行医疗:从医疗知识自动化到系统化智能医学
  7. SHELL编程之条件测试
  8. python判断输入的是空白_python判断是空的实例分享
  9. Java实现坐标系转换(WGS84、GCJ02、BD09)
  10. 通过ssh拉取gitlab代码