#matlab #time-series
#matlab #временные ряды
Вопрос:
У меня есть временной ряд с интервалом в одну минуту, из которого я хочу подмножить 3 столбца данных. Формат времени — dd / mm / yy hh: mm: ss Я хочу указать 20-минутное значение времени, для которого я хочу извлечь соответствующие выборки для всех соответствующих дней (19:00 ; 19:20 ; 19:40 ; 20:00).
Я уже создал временной ряд, используя
ts = временные ряды (данные, время) samples=getdatasamples(ts, i)
Но у меня возникли проблемы с определением логического вектора i, который может выполнять такое извлечение
Ответ №1:
Пожалуйста, попробуйте этот код:
pat_19='19:[0 2 4]0:00';
pat_20='20:00:00';
out_19=~(cellfun('isempty',regexpi(a(:,1),pat_19,'match')));
out_20=~(cellfun('isempty',regexpi(a(:,1),pat_20,'match')));
out=a(find(out_19 out_20),:);
Здесь я предположил, что значение секунд всегда '0'
Пожалуйста, смотрите Пример ниже:
"a"
представляет собой массив ячеек с датой в качестве первого столбца и значениями данных временных рядов.
a =
'15/08/81 19:00:00' 0.01
'15/08/81 19:10:00' 0.02
'15/08/81 19:20:00' 0.03
'15/08/81 19:30:00' 0.04
'15/08/81 19:40:00' 0.06
'15/08/81 19:50:00' 0.07
'15/08/81 20:00:00' 0.01
'15/08/81 20:10:00' 0.02
'15/08/81 20:20:00' 0.03
'15/08/81 20:30:00' 0.03
после выполнения приведенного выше кода выходные данные сохраняются в массиве ячеек "out"
out =
'15/08/81 19:00:00' 0.01
'15/08/81 19:20:00' 0.03
'15/08/81 19:40:00' 0.06
'15/08/81 20:00:00' 0.01