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

Matlab: extracting rows with specific datetime

我有一个包含 dates/times 的日期时间行,例如 15-May-2016 18:30:00。我试图只提取小时数以 :00:00 结尾的行,例如 15-May-2016 18:00:00,以便仅处理每小时数据。仅选取第 n 行是行不通的,因为某些时间会跳过数据,例如:

StreamData.datetime:

...

2016 年 4 月 21 日 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 结尾的行。

谢谢!

%% 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);