Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab-时间戳创建一个新列,没有分钟,也没有重复的日期_Matlab_Date_Timestamp - Fatal编程技术网

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中得到一

我有一个关于时间戳的问题,希望你能帮助我

我正在使用从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中得到一个新的列,它只保留年、月、日和小时,这些数据必须分开,我不想保留重复的日期(例如,我不想用
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')。