Matlab-时间戳创建一个新列,没有分钟,也没有重复的日期
我有一个关于时间戳的问题,希望你能帮助我 我正在使用从excel到matlab读取一个时间戳列Matlab-时间戳创建一个新列,没有分钟,也没有重复的日期,matlab,date,timestamp,Matlab,Date,Timestamp,我有一个关于时间戳的问题,希望你能帮助我 我正在使用从excel到matlab读取一个时间戳列 [temp, timestamps] = xlsread('2012_15min.xls', 'JAN', 'A25:A2999'); 此列的日期如下所示: 01-01-2012 00:00 01-01-2012 00:15 01-01-2012 00:30 01-01-2012 00:45 01-01-2012 01:00 (持续15分钟,直到1月底) 现在我想在matlab中得到一
[temp, timestamps] = xlsread('2012_15min.xls', 'JAN', 'A25:A2999');
此列的日期如下所示:
01-01-2012 00:00
01-01-2012 00:15
01-01-2012 00:30
01-01-2012 00:45
01-01-2012 01:00
(持续15分钟,直到1月底)
现在我想在matlab中得到一个新的列,它只保留年、月、日和小时,这些数据必须分开,我不想保留重复的日期(例如,我不想用01 2012 0
只保留其中一个日期)
所以我想得到:
01 01 2012 0
01 01 2012 1
01 01 2012 2
它必须持续到1月底,周期为1小时。如果您知道每小时都有数据,您可以直接构建它,但如果您可能缺少数据,因此需要从时间戳转换,然后,
datestr
/datenum
/datevec
的一些组合通常是最好的选择
首先,使用datevec转换时间戳:
times = datevec(timestamps); % sometimes need to also use format string
然后,只取年/月/日/小时,去掉重复:
[times_hours,m,n] = unique(times(:,1:4), 'rows');
您可以使用m
中的索引提取这些时间的匹配数据
如果要将其转换回某种类型的字符串,可以使用datestr
并指定格式:
timesout = datestr(times_hours,'dd mm yyyy hh');
这不起作用,我得到的是18 01 0000 hh(…)
hh
应该是hh
,抱歉。同时,时间戳的格式可能无法正确转换。尝试向第一个datevec添加格式(类似于'dd-mm-yyy-HH:mm')。