MATLAB® объекты временных рядов имеют два типа:
timeseries - Хранит данные и значения времени, а также информацию о метаданных, которая включает в себя модули, события, качество данных и метод интерполяции
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]
The 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, MethodsThe 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-на-N-на-P-by-... многомерный массив с M отсчетами, размер каждой выборки данных N-на-P-by-....
Если вы хотите выполнить операции на ts_pos и ts_vel timeseries объекты при сохранении их синхронизации сгруппировать их в набор временных рядов. Для получения дополнительной информации смотрите Синтаксис конструктора набора временных рядов.
Изменение модулей измерения временных рядов и метод интерполяции
Графическое изображение Набора временных рядов Представителей
Этот фрагмент примера иллюстрирует, как создать несколько timeseries объекты из массива. Для получения дополнительной информации о timeseries объект, см. Конструктор временных рядов.
Импортируйте выборочные данные из count.dat в рабочее пространство MATLAB.
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 объекты имеют как имя переменной (например count1) и внутреннее имя объекта (например intersection1). Имя переменной используется с функциями MATLAB. Имя объекта является свойством объекта, доступ к которому осуществляется с помощью методов объекта. Для получения дополнительной информации о timeseries свойства и методы объекта, см. «Свойства временных рядов» и «Методы временных рядов».
По умолчанию временные ряды имеют временной вектор, имеющий модули секунды и время начала 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. Этот метод недоступен в Online™ MATLAB.

После создания timeseries объект, как описано в Creating Time Series Objects, можно изменить его модули и метод интерполяции с помощью записи через точку.
Просмотр текущих свойств 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 утра.
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)
Когда вы строите график любого из временных рядов, метод plot, заданный для объектов временных рядов, отображает события как маркеры. По умолчанию маркеры являются красными заполненными кругами.
График отражает это count1 использует нуль интерполяцию удержания порядка.
График count2.
plot(count2)
Если вы строите временные ряды count2, он заменяет count1 отображение. Вы видите его события и что он использует линейную интерполяцию.
Наложите временные ряды графики путем установки hold on.
hold on
plot(count3)
Этот фрагмент примера иллюстрирует, как создать tscollection объект. Каждые отдельные временные ряды в наборе называются представителем. Для получения дополнительной информации о tscollection объект, см. Конструктор набора временных рядов.
Примечание
Как правило, вы используете tscollection объект для группирования синхронизированных временных рядов с различными модулями. В этом простом примере все временные ряды имеют одинаковые модули измерения и tscollection объект не предоставляет преимущества по сравнению с группировкой трех временных рядов в одной timeseries объект. Для примера того, как сгруппировать несколько временных рядов в один timeseries объект, см. Создание объектов временных рядов.
Создайте tscollection объект с именем count_coll и используйте синтаксис конструктора, чтобы сразу добавить два из трех временных рядов в рабочем пространстве MATLAB (третий временной ряд вы добавите позже).
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 часа (т.е. через 15 минуты после часа).
tsc1 = addsampletocollection(tsc1,'time',3.25,... 'intersection1',5);
В tsc1 три представителей Наборы и добавление выборки данных к одному представителю добавляет выборку данных к двум другим представителям в 3,25 часов. Однако, поскольку вы не указали значения данных для intersection2 и intersection3 в новой выборке отсутствующие значения представлены NaNs для этих представителей. Чтобы узнать, как удалить или интерполировать отсутствующие значения данных, смотрите Удаление отсутствующих данных и Интерполяция отсутствующих данных.
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 |
|
|
3.5 | 14 | 15 | 14.5 |
Чтобы просмотреть все intersection1 данные (включая новую выборку в 3,25 часа), тип
tsc1.intersection1
Точно так же, чтобы просмотреть все intersection2 данные (включая новую выборку в 3,25 часа, содержащую NaN значение), тип
tsc1.intersection2
Объекты временных рядов используют NaNs, чтобы представлять отсутствующие данные. Этот фрагмент примера иллюстрирует, как удалить отсутствующие данные или интерполировать значения для него с помощью метода интерполяции, заданного для этих временных рядов. В разделе Добавление выборки данных к объекту Набор временных рядов вы добавили новую выборку данных к tsc1 Набор в 3,25 часа.
Как tsc1 Набор имеет три представителей, добавляя выборку данных к одному представителю добавляя выборку данных к двум другим представителям в 3,25 часов. Однако, поскольку вы не указали значения данных для intersection2 и intersection3 Представители в 3,25 часа они в настоящее время содержат отсутствующие значения, представленные NaNс.
Удаление отсутствующих данных. Найдите и удалите выборки данных, содержащие значения NaN в tsc1 набор.
tsc1 = delsamplefromcollection(tsc1,'index',... find(isnan(tsc1.intersection2.Data)));
Эта команда ищет один tscollection представитель за раз - в данном случае intersection2. Когда отсутствующее значение расположено в intersection2, данные на тот момент удаляются из всех представителей tscollection.
Примечание
Используйте синтаксис записи через точку для доступа к Data свойство intersection2 представитель tsc1 набор:
tsc1.intersection2.Data
Полный список timeseries свойства, см. «Свойства временных рядов».
Интерполяция отсутствующих данных. Ради этого примера повторно введите 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 свойства, см. Набор временных рядов свойства.
Чтобы просмотреть 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 для timeseries синтаксис конструктора объектов.
Пример использования конструктора см. в разделе Создание объектов временных рядов.
См. timeseries описание всех timeseries свойства объекта. Можно задать Data, IsTimeFirst, Name, Quality, и Time свойства как входные параметры в конструкторе. Чтобы назначить другие свойства, используйте set функция или запись через точку.
Примечание
Чтобы получить информацию о свойствах из командной строки, введите help timeseries/tsprops в подсказку MATLAB.
Пример редактирования timeseries свойства объекта, см. Изменение модулей измерения временных рядов и метод интерполяции.
Описание всех методов временных рядов смотрите timeseries.
Объект MATLAB, называемый tscollection, является переменным MATLAB, которая группирует несколько временных рядов с общим временным вектором. The timeseries объекты, которые вы включаете в tscollection объект называются представителями этого набора, и обладает несколькими методами для удобного анализа и манипуляции timeseries.
Прежде чем вы реализуете методы MATLAB, специально разработанные для работы с набором timeseries объекты, вы должны создать tscollection объект для хранения данных.
Следующая таблица результирует синтаксис для использования tscollection конструктор. Пример использования этого конструктора см. в разделе Создание объектов наборе временных рядов.
Описания синтаксиса набора временных рядов
Синтаксис | Описание |
|---|---|
| Создает The
The |
| Создает пустую Когда значения времени являются строками даты, вы должны задать |
| Опционально введите следующие пары значение параметров после
|
В этой таблице перечислены свойства tscollection объект. Можно задать Name, Time, и TimeInfo свойства как входные параметры в tscollection конструктор.
Описания свойств набора временных рядов
Свойство | Описание |
|---|---|
|
|
| Вектор значений времени. Когда Длина |
| Использует следующие поля для хранения контекстной информации о
|
Общие методы набора временных рядов. Используйте следующие методы, чтобы запросить и задать свойства объекта и построить график данных.
Методы запроса свойств
Манипуляции данными и временем. Используйте следующие методы для добавления или удаления выборок данных и управления tscollection объект.
Методы манипулирования данными и временем
Метод | Описание |
|---|---|
Добавление | |
Добавьте выборки данных в | |
Удалите одни или несколько выборок данных из | |
Извлечение временного вектора строки даты из | |
Извлечение выборок данных из существующего | |
Верните массив ячеек с именами временных рядов в | |
Горизонтальная конкатенация | |
Удалите один или несколько | |
Выбор или интерполяция данных в | |
Установите значения времени в временном векторе | |
Изменение имени выбранного | |
Вертикальная конкатенация |