Matlab:提取具有特定日期时间的行

时间:2016-06-22 20:21:24

标签: matlab datetime rows

我有一个包含日期/时间的日期时间行,例如2016年5月15日18:30:00。我试图仅提取小时结束时间为00:00的行,例如2016年5月15日18:00:00,以便仅处理每小时数据。仅选取每第n行不起作用,因为某些时间会跳过数据,例如:

StreamData.datetime:

...

21-Apr-2016 12:00:00

2016年4月21日12:15:00

2016年4月21日12:30:00

2016年4月21日12:45:00

2016年4月21日13:00:00

2016年4月21日14:45:00

2016年4月21日15:00:00

...

这也是为什么我不想聚合每小时数据的平均值,而只想要日期时间以:00:00结尾的行。

谢谢!

1 个答案:

答案 0 :(得分:1)

%% Your data
date = ['21-Apr-2016 12:00:00';
        '21-Apr-2016 12:15:00';
        '21-Apr-2016 12:30:00';
        '21-Apr-2016 12:45:00';
        '21-Apr-2016 13:00:00';
        '21-Apr-2016 14:45:00';
        '21-Apr-2016 15:00:00'];

data = (1:7)'; % example (data)

%% convert date to vector extracting minutes and second (via datenum first)   
[~,~,~,~,minutes,seconds] = datevec(datenum(date,'dd-mmm-yyyy HH:MM:SS'));

%% Index zero minutes and zero seconds    
zero_minutes = minutes == 0;
zero_seconds = seconds == 0;

%% Get at the hour indices (rows)
at_the_hour_rows = zero_minutes & zero_seconds; 

%% Example extracting corresponding data  
at_the_hour_data = data(at_the_hour_rows);