Объекты временных рядов 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]
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, MethodsLength из временного вектора, который является 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.
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 свойства объектов и методы, см. Методы Time Series Properties и Time Series.
По умолчанию временные ряды имеют временной вектор, имеющий модули секунд и времени начала 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 (вы добавите третьи временные ряды позже).
tsc = tscollection({count1 count2},'name', 'count_coll')
Примечание
Временные векторы timeseries объекты вы добавляете к tscollection должен соответствовать.
Заметьте что Name свойство timeseries объекты используются, чтобы назвать члены набора как intersection1 и intersection2.
Добавьте третий timeseries объект в рабочей области к tscollection.
tsc = addts(tsc, count3)
Перечислены все три члена в наборе.
Этот фрагмент примера иллюстрирует, как передискретизировать каждый член в a 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')
Этот фрагмент примера иллюстрирует, как добавить выборку данных в a tscollection.
Добавьте выборку данных в intersection1 член набора в 3,25 часа (i.e., спустя 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 часа, они в настоящее время содержат отсутствующие значения, представленные NaNs.
Удаление Недостающих Данных. Найдите и удалите выборки данных, содержащие значения 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 для timeseries синтаксис конструктора Object.
Для примера использования конструктора смотрите Объекты Временных рядов Создания.
Смотрите timeseries для описания всего timeseries свойства объектов. Можно задать Data, IsTimeFirstИмя, Quality, и Time свойства как входные параметры в конструкторе. Чтобы присвоить другие свойства, используйте set функциональная или запись через точку.
Примечание
Чтобы получить информацию свойства из командной строки, введите help timeseries/tsprops в подсказке MATLAB.
Для примера редактирования timeseries свойства объектов, смотрите Модули Временных рядов Изменения и Метод интерполяции.
Для описания все время серийных методов, смотрите timeseries.
Объект MATLAB, названный tscollection, переменная MATLAB что группы несколько временных рядов с общим временным вектором. timeseries объекты, которые вы включаете в tscollection объект называется членами этого набора и обладает несколькими методами для удобного анализа и манипуляции timeseries.
Прежде чем вы реализуете методы MATLAB, специально предназначенные, чтобы работать с набором timeseries объекты, необходимо создать a tscollection объект хранить данные.
Следующая таблица обобщает синтаксис для использования tscollection конструктор. Для примера использования этого конструктора смотрите Объекты Набора временных рядов Создания.
Описания синтаксиса набора временных рядов
Синтаксис | Описание |
|---|---|
| Создает
|
| Создает пустой Когда временные стоимости являются строками даты, необходимо задать |
| Опционально введите следующие пары значения параметров после
|
Эта таблица приводит свойства tscollection объект. Можно задать NameВремя, и TimeInfo свойства как входные параметры в tscollection конструктор.
Описания свойства набора временных рядов
Свойство | Описание |
|---|---|
|
|
| Вектор из временных стоимостей. Когда Длина |
| Использует следующие поля, чтобы хранить контекстную информацию о
|
Общие Методы Набора временных рядов. Используйте следующие методы, чтобы запросить и установить свойства объектов и отобразить данные на графике.
Методы для запроса свойств
Данные и Методы обработки Времени. Используйте следующие методы, чтобы добавить или удалить выборки данных и управлять tscollection объект.
Методы для управления данными и время
Метод | Описание |
|---|---|
Добавьте | |
Добавьте выборки данных в | |
Удалите одну или несколько выборок данных из | |
Извлеките временной вектор строки даты из | |
Извлеките выборки данных из существующего | |
Возвратите массив ячеек имен временных рядов в | |
Горизонтальная конкатенация | |
Удалите один или несколько | |
Выберите или интерполируйте данные в | |
Установите временные стоимости во временном векторе | |
Поменяйте имя выбранного | |
Вертикальная конкатенация |