我是靠谱客的博主 健康帆布鞋,最近开发中收集的这篇文章主要介绍MATLAB时间计算背景1. 生成等间隔的时间序列(字符串格式)2. 计算两个时间点之间的时间差 3. 已知一个时间点和时间差,求另一个时间点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景

使用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' 到 '21:03: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. 生成等间隔的时间序列(字符串格式)2. 计算两个时间点之间的时间差 3. 已知一个时间点和时间差,求另一个时间点的全部内容,希望文章能够帮你解决MATLAB时间计算背景1. 生成等间隔的时间序列(字符串格式)2. 计算两个时间点之间的时间差 3. 已知一个时间点和时间差,求另一个时间点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部