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);
我有一个包含 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);