Объекты временных рядов

Типы временного ряда и их использования

Объекты MATLAB® временных рядов имеют два типа:

  • временные ряды Хранит данные и временные стоимости, а также информацию о метаданных, которая включает модули, события, качество данных и метод интерполяции

  • tscollection Хранит набор объектов timeseries, которые совместно используют общий временной вектор, удобный для выполнения операций на синхронизируемом временном ряде с различными модулями

В этом разделе рассматриваются следующие темы:

  • Используя конструкторов временных рядов, чтобы инстанцировать классов временных рядов

  • Изменение свойств объектов с помощью методов set или записи через точку

  • Вызывание функций временных рядов и методов

Чтобы получить быстрое представление о программировании с timeseries и объектами tscollection, выполните шаги в Примере: Объекты временных рядов и методы.

Выборка данных временных рядов

Чтобы правильно понять описание свойств объектов timeseries и методы в этой документации, важно разъяснить некоторые условия, связанные с тем, чтобы хранить данные в объекте timeseries — различие между значением данных и выборкой данных.

Значение данных является единственным, скалярным значением, зарегистрированным в определенное время. Выборка данных состоит из одного или нескольких значений, сопоставленных с определенным временем в объекте timeseries. Количество выборок данных во временном ряду совпадает с длиной временного вектора.

Например, рассмотрите данные, который состоит из трех сигналов датчика: два сигнала представляют положение объекта в метрах, и третье представляет свою скорость в метрах/секунда.

Чтобы ввести матрицу данных, введите следующее в посдказке MATLAB:

x = [-0.2 -0.3 13;
     -0.1 -0.4 15;
      NaN  2.8 17;
      0.5 0.3 NaN;
     -0.3 -0.1 15]

Значение NaN представляет недостающее значение данных. MATLAB отображает следующее 5 3 матрица:

 x=
   -0.2000   -0.3000   13.0000
   -0.1000   -0.4000   15.0000
    NaN       2.8000   17.0000
    0.5000    0.3000       NaN
   -0.3000   -0.1000   15.0000

Первые два столбца x содержат количества с теми же модулями, и можно создать многомерный объект timeseries сохранить эти два временных ряда. Для получения дополнительной информации о создании объектов timeseries, смотрите Конструктора Временных рядов. Следующая команда создает объект timeseries ts_pos, чтобы сохранить значения положения:

ts_pos = timeseries(x(:,1:2), 1:5, 'name', 'Position')

MATLAB отвечает путем отображения следующих свойств ts_pos:

timeseries

  Common Properties:
            Name: 'Position'
            Time: [5x1 double]
        TimeInfo: [1x1 tsdata.timemetadata]
            Data: [5x2 double]
        DataInfo: [1x1 tsdata.datametadata]

  More properties, Methods

Length временного вектора, который является 5 в этом примере, равняется количеству выборок данных в объекте timeseries. Найдите размер выборки данных в ts_pos путем ввода следующего в посдказке MATLAB:

getdatasamplesize(ts_pos)

ans =

     1     2

Точно так же можно создать второй объект timeseries хранить скоростные данные:

ts_vel = timeseries(x(:,3), 1:5, 'name', 'Velocity');

Найдите размер каждой выборки данных в ts_vel путем ввода следующего:

getdatasamplesize(ts_vel)

ans =

     1     1

Заметьте, что ts_vel имеет одно значение данных в каждой выборке данных, и ts_pos имеет два значения данных в каждой выборке данных.

Примечание

В целом, когда данные временных рядов являются M-by-N-by-P-by-... многомерный массив с выборками M, размер каждой выборки данных является N-by-P-by-....

Если вы хотите выполнить операции на ts_pos и ts_vel, объекты timeseries при хранении их синхронизировались, сгруппируйте их в наборе временных рядов. Для получения дополнительной информации смотрите Синтаксис Конструктора Набора временных рядов.

Пример: Объекты временных рядов и методы

Создание объектов временных рядов

Этот фрагмент примера иллюстрирует, как создать несколько объектов timeseries из массива. Для получения дополнительной информации об объекте timeseries, смотрите Конструктора Временных рядов.

Импортируйте демонстрационные данные от count.dat до MATLAB workspace.

load count.dat

Это добавляет 24 3 матрица, count, к рабочей области. Каждый столбец count представляет почасовые количества механизма на каждом из трех городских пересечений.

Просмотрите матрицу count.

count

Создайте три объекта timeseries хранить данные, собранные на каждом пересечении.

count1 = timeseries(count(:,1), 1:24,'name', 'intersection1');
count2 = timeseries(count(:,2), 1:24,'name', 'intersection2');
count3 = timeseries(count(:,3), 1:24,'name', 'intersection3');

Примечание

В вышеупомянутой конструкции объекты timeseries имеют обоих имя переменной (e. g., count1) и внутреннее имя объекта (e. g., intersection1). Имя переменной используется с функциями MATLAB. Имя объекта является свойством объекта, к которому получают доступ с методами объекта. Для получения дополнительной информации о свойствах объектов timeseries и методах, см. Методы Временных рядов и Time Series Properties.

По умолчанию временной ряд имеет временной вектор, имеющий модули секунд и времени начала 0 секунд. Пример создает count1, count2 и объекты count3 временных рядов с временами запуска 1 секунды, временем окончания 24 секунд и инкрементами с 1 секундой. Вы измените единицы измерения времени на часы в Изменении Модулей Временных рядов и Метода интерполяции.

Примечание

Если вы хотите создать объект timeseries, который группирует эти три столбца данных в count, используйте следующий синтаксис:

count_ts = timeseries(count, 1:24,'name','traffic_counts')

Это полезно, когда все временные ряды имеют те же модули, и вы хотите сохранить их, синхронизировался во время вычислений.

Просмотр объектов временных рядов

После создания объекта timeseries, как описано в Создании Объектов Временных рядов, можно просмотреть его в редакторе Переменных.

Чтобы просмотреть объект timeseries как count1 в редакторе Переменных, используйте любой из следующих методов:

  • Введите open('count1') в командной строке.

  • На вкладке Home, в разделе Variable, нажимают Open Variable и выбирают count1. Этот метод не доступен в MATLAB Online™.

Изменение модулей временных рядов и метода интерполяции

После создания объекта timeseries, как описано в Создании Объектов Временных рядов, можно изменить его модули и метод интерполяции с помощью записи через точку.

Просмотрите текущие свойства count1.

get(count1)

MATLAB отображает текущие значения свойств объекта count1 timeseries.

Просмотрите текущие свойства DataInfo с помощью записи через точку.

count1.DataInfo

Измените модули данных для count1 к 'cars'.

count1.DataInfo.Units = 'cars';

Установите метод интерполяции для count1 к нулевому порядку, содержат.

count1.DataInfo.Interpolation = tsdata.interpolation('zoh');

Проверьте, что свойства DataInfo были изменены.

count1.DataInfo

Измените единицы измерения времени, чтобы быть 'hours' для трех временных рядов.

count1.TimeInfo.Units = 'hours';
count2.TimeInfo.Units = 'hours';
count3.TimeInfo.Units = 'hours';

Определение Событий

Этот фрагмент примера иллюстрирует, как задать события для объекта timeseries при помощи tsdata.event вспомогательный объект. События отмечают данные в определенные времена. Когда вы отображаете данные на графике, маркеры события отображены на графике. События также обеспечивают удобный способ синхронизировать несколько временных рядов.

Добавьте два события к данным, которые отмечают времена поездки на работу AM и поездки на работу PM.

Создайте и добавьте первое событие ко всему временному ряду. Первое событие имеет место в 8:00.

e1 = tsdata.event('AMCommute',8);
e1.Units = 'hours';            % Specify the units for time
count1 = addevent(count1,e1);  % Add the event to count1
count2 = addevent(count2,e1);  % Add the event to count2
count3 = addevent(count3,e1);  % Add the event to count3

Создайте и добавьте второе событие ко всему временному ряду. Второе событие имеет место в 18:00.

e2 = tsdata.event('PMCommute',18);
e2.Units = 'hours';            % Specify the  units for time
count1 = addevent(count1,e2);  % Add the event to count1
count2 = addevent(count2,e2);  % Add the event to count2
count3 = addevent(count3,e2);  % Add the event to count3

Постройте график временного ряда, count1.

figure
plot(count1)

Когда вы строите график любого из временных рядов, метод графика, заданный для событий отображений объектов временных рядов как маркеры. Маркерами по умолчанию красные заполненные круги.

График отражает, что интерполяция использования count1 "нулевой порядок содержит".

Постройте график count2.

plot(count2)

Если вы строите график временного ряда count2, он заменяет отображение count1. Вы видите его события и что это использует линейную интерполяцию.

Наложите графики временных рядов установки hold on.

hold on
plot(count3)

Создание объектов набора временных рядов

Этот фрагмент примера иллюстрирует, как создать объект tscollection. Каждый отдельный временной ряд в наборе называется участником. Для получения дополнительной информации об объекте tscollection, смотрите Конструктора Набора временных рядов.

Примечание

Как правило, вы используете объект tscollection сгруппироваться, синхронизировал временные ряды, которые имеют различные модули. В этом простом примере все временные ряды имеют те же модули, и объект tscollection не обеспечивает преимущество перед группировкой трех временных рядов в единственном объекте timeseries. Для примера того, как сгруппировать несколько временных рядов в одном объекте timeseries, смотрите Объекты Создания Временных рядов.

Создайте объект tscollection под названием count_coll и используйте синтаксис конструктора, чтобы сразу добавлять два из трех временных рядов в настоящее время в MATLAB workspace (вы добавите третий временной ряд позже).

tsc = tscollection({count1 count2},'name', 'count_coll')

Примечание

Временные векторы timeseries возражают, что вы добавляете к tscollection, должен соответствовать.

Заметьте, что свойство Name объектов timeseries используется, чтобы назвать участников набора как intersection1 и intersection2.

Добавьте третий объект timeseries в рабочей области к tscollection.

tsc = addts(tsc, count3)

Перечислены все три участника в наборе.

Передискретизация объекта набора временных рядов

Этот фрагмент примера иллюстрирует, как передискретизировать каждого участника в tscollection с помощью нового временного вектора. Операция передискретизации используется, чтобы или выбрать существующие данные в определенных временных стоимостях или интерполировать данные в более прекрасных интервалах. Если новый временной вектор содержит временные стоимости, которые не существовали в предыдущем временном векторе, новые значения данных вычисляются с помощью метода интерполяции по умолчанию, который вы сопоставили с временным рядом.

Передискретизируйте временной ряд, чтобы включать значения данных каждые 2 часа вместо каждого часа и сохранить его как новый объект tscollection.

tsc1 = resample(tsc,1:2:24)

В некоторых случаях вам может быть нужна более прекрасная выборка информации, чем вы в настоящее время имеете, и разумно получить его путем интерполяции значений данных.

Интерполируйте значения в каждой получасовой метке.

tsc1 = resample(tsc,1:0.5:24)

К добавленным стоимостям в каждой получасовой метке используется метод интерполяции по умолчанию временного ряда. Например, новые точки данных в intersection1 вычисляются при помощи нулевого порядка, содержат метод интерполяции, который содержит значение предыдущей демонстрационной константы. Вы устанавливаете метод интерполяции для intersection1, как описано в Изменении Модулей Временных рядов и Метода интерполяции.

Новые точки данных в intersection2 и intersection3 вычисляются с помощью линейной интерполяции, которая является методом по умолчанию.

Постройте график членов tsc1 с маркерами, чтобы видеть результаты интерполяции.

hold off                % Allow axes to clear before plotting
plot(tsc1.intersection1,'-xb','Displayname','Intersection 1')

Вы видите, что точки данных были интерполированы в получасовых интервалах, и что Пересечение, которое 1 нулевой порядок "интерполяции использования содержит", в то время как другие два участника используют линейную интерполяцию.

Поддержите график в фигуре, в то время как вы добавляете другие двух участников к графику. Поскольку метод plot подавляет подписи по осям, в то время как hold является on, также добавьте легенду, чтобы описать три ряда.

hold on
plot(tsc1.intersection2,'-.xm','Displayname','Intersection 2')
plot(tsc1.intersection3,':xr','Displayname','Intersection 3')
legend('show','Location','NorthWest')

Добавление выборки данных к объекту набора временных рядов

Этот фрагмент примера иллюстрирует, как добавить выборку данных к tscollection.

Добавьте выборку данных к участнику набора intersection1 в 3,25 часа (i. e., спустя 15 минут после часа).

tsc1 = addsampletocollection(tsc1,'time',3.25,...
       'intersection1',5);

Существует три участника в наборе tsc1 и добавление, что выборка данных одному участнику добавляет выборку данных к другим двум участникам в 3,25 часа. Однако, потому что вы не задавали значения данных для intersection2 и intersection3 в новой выборке, отсутствующие значения представлены NaN s для этих участников. Чтобы изучить, как удалить или интерполировать недостающие значения данных, смотрите, что Удаление Пропускает Данные и Интерполирует Недостающие Данные.

Данные tsc1 от 2,0 до 3.5 часов

Часы

Пересечение 1

Пересечение 2

Пересечение 3

2.0

7

13

11

2.5

7

15

15.5

3.0

14

17

20

3.25

5

NaN

NaN

3.5

14

15

14.5

Чтобы просмотреть все данные intersection1 (включая новую выборку в 3,25 часа), ввести

tsc1.intersection1

Точно так же, чтобы просмотреть все данные intersection2 (включая новую выборку в 3,25 часа, содержащие значение NaN), ввести

tsc1.intersection2

Удаление и интерполяция недостающих данных

Объекты временных рядов используют NaN s, чтобы представлять недостающие данные. Этот фрагмент примера иллюстрирует, как или удалить недостающие данные или интерполировать значения для него при помощи метода интерполяции, который вы задали для того временного ряда. В Добавлении Выборки Данных к Объекту Набора временных рядов вы добавили новую выборку данных к набору tsc1 в 3,25 часа.

Когда набор tsc1 имеет трех участников, добавляя, что выборка данных одному участнику добавила выборку данных к другим двум участникам в 3,25 часа. Однако, потому что вы не задавали значения данных для intersection2 и участников intersection3 в 3,25 часа, они в настоящее время содержат отсутствующие значения, представленные NaN s.

Удаление Недостающих Данных.  Найдите и удалите выборки данных, содержащие значения NaN в наборе tsc1.

tsc1 = delsamplefromcollection(tsc1,'index',...
       find(isnan(tsc1.intersection2.Data)));

Эта команда ищет одного участника tscollection за один раз — в этом случае, intersection2. Когда отсутствующее значение расположено в intersection2, данные в то время удален от всех членов tscollection.

Примечание

Используйте синтаксис записи через точку, чтобы получить доступ к свойству Data участника intersection2 в наборе tsc1:

tsc1.intersection2.Data

Для полного списка свойств timeseries смотрите Time Series Properties.

Интерполяция Недостающих Данных.  Ради этого примера повторно представьте значения NaN в intersection2 и intersection3.

tsc1 = addsampletocollection(tsc1,'time',3.25,...
       'intersection1',5);

Интерполируйте отсутствующие значения в tsc1 с помощью вектора текущего времени (tsc1.Time Время.

tsc1 = resample(tsc1,tsc1.Time);

Это заменяет значения NaN в intersection2 и intersection3 при помощи линейной интерполяции — метод интерполяции по умолчанию для этих временных рядов.

Примечание

Запись через точку tsc1.Time используется, чтобы получить доступ к свойству Time набора tsc1. Для полного списка свойств tscollection смотрите Time Series Collection Properties.

К данным представления intersection2 после интерполяции, например, типа

tsc1.intersection2

Новые tsc1 Данные от 2,0 до 3.5 Часов

Часы

Пересечение 1

Пересечение 2

Пересечение 3

2.0

7

13

11

2.5

7

15

15.5

3.0

14

17

20

3.25

5

16

17.3

3.5

14

15

14.5

Удаление временного ряда из набора временных рядов

Удалите временной ряд intersection3 из объекта tscollection tsc1.

tsc1 = removets(tsc1,'intersection3')

Два временных ряда как участники в наборе теперь перечислены.

Отображение значений временного вектора как строки даты

Этот фрагмент примера иллюстрирует, как управлять форматом в который числовое отображение временного вектора, с помощью строк даты MATLAB. Для полного списка форматов строки даты MATLAB, поддержанных для timeseries и объектов tscollection, см. определение определения временного вектора на странице с описанием timeseries.

Чтобы использовать строки даты, необходимо установить поле StartDate свойства TimeInfo. Все значения во временном векторе преобразованы в строки даты с помощью StartDate в качестве ссылочной даты.

Предположим, что ссылочная дата происходит 25 декабря 2009.

tsc1.TimeInfo.Units = 'hours';
tsc1.TimeInfo.StartDate = '25-DEC-2009 00:00:00';

Так же к тому, что вы сделали с count1, count2 и объекты count3 временных рядов, установили модули данных на участников tsc1 к строке 'car count'.

tsc1.intersection1.DataInfo.Units = 'car count';
tsc1.intersection2.DataInfo.Units = 'car count';

Графическое изображение участников набора временных рядов

Чтобы отобразить данные на графике в наборе временных рядов, вы строите график его участников по одному.

Первый график участник tsc1 intersection1.

hold off
plot(tsc1.intersection1);

Когда вы строите график члена набора временных рядов, его отображения единиц измерения времени на x - оси и его модульном отображении данных на y - ось. Заголовок графика отображен как 'Time Series Plot:<member name>'.

При использовании ту же фигуру, чтобы построить график различного члена набора, никакого отображения аннотаций. Метод plot временных рядов не пытается обновить метки и заголовки, когда hold является on, потому что дескрипторы для ряда могут отличаться.

Постройте график intersection1 и intersection2 в той же фигуре. Предотвратите перезапись графика, но удалите подписи по осям и заголовок. Добавьте легенду и установите свойство DisplayName ряда строки маркировать каждого участника.

plot(tsc1.intersection1,'-xb','Displayname','Intersection 1')
hold on
plot(tsc1.intersection2,'-.xm','Displayname','Intersection 2')
legend('show','Location','NorthWest')

График теперь включает два временных ряда в набор: intersection1 и intesection2. Графическое изображение второго графика стерло метки на первом графике.

Наконец, измените строки даты на x - ось к hours и постройте график двух участников набора временных рядов снова с легендой.

Задайте единицы измерения времени, чтобы быть 'часами' для набора.

tsc1.TimeInfo.Units = 'hours';

Задайте формат для отображения времени.

tsc1.TimeInfo.Format = 'HH:MM';

Воссоздайте последний график с новыми единицами измерения времени.

hold off
plot(tsc1.intersection1,'-xb','Displayname','Intersection 1')

% Prevent overwriting plot, but remove axis labels and title.
hold on
plot(tsc1.intersection2,'-.xm','Displayname','Intersection 2')
legend('show','Location','NorthWest')

% Restore the labels with the |xlabel| and |ylabel| commands and overlay a
% data grid.
xlabel('Time (hours)')
ylabel('car count')
grid on

Для получения дополнительной информации о графическом изображении опций для временного ряда смотрите timeseries.

Конструктор временных рядов

Прежде, чем реализовать различные функции MATLAB и методы, специально предназначенные, чтобы обработать данные временных рядов, необходимо создать объект timeseries хранить данные. Смотрите timeseries для синтаксиса конструктора Object timeseries.

Для примера использования конструктора смотрите Объекты Создания Временных рядов.

Time Series Properties

Смотрите timeseries для описания всех свойств объектов timeseries. Можно задать Data, IsTimeFirst, Name, Quality и свойства Time как входные параметры в конструкторе. Чтобы присвоить другие свойства, используйте функцию set или запись через точку.

Примечание

Чтобы получить информацию свойства из командной строки, введите help timeseries/tsprops в посдказке MATLAB.

Для примера редактирования свойств объектов timeseries смотрите Модули Изменения Временных рядов и Метод интерполяции.

Методы timeseries

Для описания все время серийных методов, смотрите timeseries.

Конструктор набора временных рядов

Введение

Объектом MATLAB, названным tscollection, является переменная MATLAB что группы несколько временных рядов с общим временным вектором. timeseries возражает, что вы включаете в объект tscollection, называются членами этого набора и обладают несколькими методами для удобного анализа и манипуляции timeseries.

Синтаксис конструктора набора временных рядов

Прежде чем вы реализуете методы MATLAB, специально предназначенные, чтобы работать с набором объектов timeseries, необходимо создать объект tscollection хранить данные.

Следующая таблица обобщает синтаксис для использования конструктора tscollection. Для примера использования этого конструктора смотрите Объекты Набора временных рядов Создания.

Описания синтаксиса набора временных рядов

Синтаксис

Описание

tsc = tscollection(ts)

Создает объект tscollection tsc, который включает один или несколько объектов timeseries.

Аргумент ts может быть одним из следующего:

  • Единственный объект timeseries в MATLAB workspace

  • Массив ячеек timeseries возражает в MATLAB workspace

Объекты timeseries совместно используют тот же временной вектор в tscollection.

tsc = tscollection(Time)

Создает пустой объект tscollection с временным вектором Time.

Когда временные стоимости являются строками даты, необходимо задать Time как массив ячеек строк даты.

tsc = tscollection(Time, TimeSeries, 'Parameter', Value, ...)

Опционально введите следующие пары значения параметров после аргументов Time и TimeSeries:

Time Series Collection Properties

Эта таблица приводит свойства объекта tscollection. Можно задать Name, Time и свойства TimeInfo как входные параметры в конструкторе tscollection.

Описания свойства набора временных рядов

Свойство

Описание

Имя

Имя объекта tscollection, введенное как строка. Это имя может отличаться от имени переменной tscollection в MATLAB workspace.

Время

Вектор временных стоимостей.

Когда TimeInfo.StartDate пуст, числовые значения Time измеряются относительно 0 в заданных модулях. Когда TimeInfo.StartDate задан, временные стоимости представляют строки даты, измеренные относительно StartDate в заданных модулях.

Длина Time должна совпадать или с первым или с последней размерностью свойства Data каждого участника tscollection.

TimeInfo

Использует следующие поля, чтобы хранить контекстную информацию о Time:

  • Модули Единицы измерения времени со следующими значениями: 'weeks', 'days', 'hours', 'minutes', 'seconds', 'milliseconds', 'microseconds' и 'nanoseconds'

  • Запуск Время начала

  • Конец Время окончания (только для чтения)

  • Increment — Интервал между двумя последующими временными стоимостями. Инкрементом является NaN, когда времена однородно не выбираются.

  • Длина Длина временного вектора (только для чтения)

  • Формат Строка, задающая формат отображения строки даты. Смотрите страницу ссылки на функцию datestr MATLAB для получения дополнительной информации.

  • StartDate — Строка даты, задающая ссылочную дату. Смотрите страницу ссылки на функцию setabstime MATLAB для получения дополнительной информации.

  • UserData Хранит любую дополнительную пользовательскую информацию

Методы набора временных рядов

Общие Методы Набора временных рядов.  Используйте следующие методы, чтобы запросить и установить свойства объектов и отобразить данные на графике.

Методы для Querying Properties

Метод

Описание

получение

Запросите значения свойства объекта tscollection.

isempty

Оцените к true для пустого объекта tscollection.

длина

Возвратите длину временного вектора.

график

Постройте график временного ряда в наборе.

набор

Установите значения свойств tscollection.

размер

Возвратите размер объекта tscollection.

Данные и Методы обработки Времени.  Используйте следующие методы, чтобы добавить или удалить выборки данных и управлять объектом tscollection.

Методы для управления данными и время

Метод

Описание

addts

Добавьте объект timeseries к объекту tscollection.

addsampletocollection

Добавьте выборки данных к объекту tscollection.

delsamplefromcollection

Удалите одну или несколько выборок данных из объекта tscollection.

getabstime

Извлеките временной вектор строки даты от объекта tscollection в массив ячеек.

getsampleusingtime

Извлеките выборки данных от существующего объекта tscollection в новый объект tscollection.

gettimeseriesnames

Возвратите массив ячеек имен временных рядов в объекте tscollection.

horzcat

Горизонтальная конкатенация объектов tscollection. Объединения несколько объектов timeseries с тем же временным вектором в один набор временных рядов.

removets

Удалите один или несколько объектов timeseries из объекта tscollection.

передискретизация

Выберите или интерполируйте данные в объекте tscollection с помощью нового временного вектора.

setabstime

Установите временные стоимости во временном векторе объекта tscollection как строки даты.

settimeseriesnames

Поменяйте имя выбранного объекта timeseries в объекте tscollection.

vertcat

Вертикальная конкатенация объектов tscollection. Соединения несколько объектов tscollection вдоль измерения времени.

Была ли эта тема полезной?