2016-06-22 1 views
1

У меня есть строка datetime, содержащая даты/время, такие как 15 мая 2016 года 18:30:00. Я пытаюсь извлечь только строки с часами, заканчивающимися на: 00: 00, например 15 мая-2016 18:00:00, чтобы работать только с почасовыми данными. Выбор только каждый N-й строки не работает, потому что определенное время пропустить в данных, таких как:Matlab: извлечение строк с конкретным временем жизни

StreamData.datetime: 

...

21-апр-2016 12:00:00

21-Апрель -2016 12:15:00

21-Апрель-2016 12:30:00

21-Апрель-2016 12:45:00

21-Апрель-2016 13:00:00

21-Апрель-2016 14:45:00

21-Апрель-2016 15:00:00

...

Вот почему я не хочу агрегировать средние значения почасовых данных, но хочу только строки с дат-временем, заканчивающиеся на: 00: 00.

Спасибо!

ответ

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); 
+0

Второй шаг (zero_minutes =) дает логические 1 и 0s, если true или false, причем третий шаг дает то же самое; поэтому конечный результат состоит в том, что at_the_hour_data - это массив символов из числа цифр 0, 1 или 2 – Sara

+0

@Sara - at_the_hour_rows дает вам логический (True или False) для zero_minutes и zero_seconds - вы затем используете at_the_hour_rows для извлечения ваших данных, представляющих интерес. Последняя строка (at_the_hour_data) является просто примером извлечения соответствующих данных из вектора, содержащего от 1 до 7 (образцы данных, которые я составил), и их можно игнорировать. Надеюсь, это поможет. – OsJoe

+0

Тогда это не должно работать ?: 'at_the_hour_data = StreamData.datetime (at_the_hour_rows);'? Поскольку он дает только массив символов – Sara