Подмножество временных рядов с использованием matlab

#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