Sara
Sara

Reputation: 13

Matlab: extracting rows with specific datetime

I have a datetime row containing dates/times such as 15-May-2016 18:30:00. I am trying to extract only rows with hours ending in :00:00, such as 15-May-2016 18:00:00, in order to work with hourly data only. Picking only every nth row does not work because certain times skip in the data, such as:

StreamData.datetime:

...

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

...

This is also why I do not want to aggregate averages on hourly data, but want only the rows with datetime ending in :00:00.

Thank you!

Upvotes: 1

Views: 446

Answers (1)

OsJoe
OsJoe

Reputation: 259

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

Upvotes: 1

Related Questions