Объекты временных рядов 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.
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)
Перечислены все три участника в наборе.
Этот фрагмент примера иллюстрирует, как передискретизировать каждого участника в 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
в новой выборке, отсутствующие значения представлены 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 |
|
|
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
.
Для примера использования конструктора смотрите Объекты Временных рядов Создания.
Смотрите timeseries
для описания всех свойств объектов timeseries
. Можно задать Data
, IsTimeFirst
, Name
, Quality
и свойства Time
как входные параметры в конструкторе. Чтобы присвоить другие свойства, используйте функцию set
или запись через точку.
Чтобы получить информацию свойства из командной строки, введите help timeseries/tsprops
в посдказке MATLAB.
Для примера редактирования свойств объектов timeseries
смотрите Модули Временных рядов Изменения и Метод интерполяции.
Для описания все время серийных методов, смотрите timeseries
.
Объектом MATLAB, названным tscollection
, является переменная MATLAB что группы несколько временных рядов с общим временным вектором. timeseries
возражает, что вы включаете в объект tscollection
, называются членами этого набора и обладают несколькими методами для удобного анализа и манипуляции timeseries
.
Прежде чем вы реализуете методы MATLAB, специально предназначенные, чтобы работать с набором объектов timeseries
, необходимо создать объект tscollection
хранить данные.
Следующая таблица обобщает синтаксис для использования конструктора tscollection
. Для примера использования этого конструктора смотрите Объекты Набора временных рядов Создания.
Описания синтаксиса набора временных рядов
Синтаксис | Описание |
---|---|
| Создает объект Аргумент
Объекты |
| Создает пустой объект Когда временные стоимости являются строками даты, необходимо задать |
| Опционально введите следующие пары значения параметров после аргументов
|
Эта таблица приводит свойства объекта tscollection
. Можно задать Name
, Time
и свойства TimeInfo
как входные параметры в конструкторе tscollection
.
Описания свойства набора временных рядов
Свойство | Описание |
---|---|
| Имя объекта |
| Вектор временных стоимостей. Когда Длина |
| Использует следующие поля, чтобы хранить контекстную информацию о
|
Общие Методы Набора временных рядов. Используйте следующие методы, чтобы запросить и установить свойства объектов и отобразить данные на графике.
Методы для запроса свойств
Данные и Методы обработки Времени. Используйте следующие методы, чтобы добавить или удалить выборки данных и управлять объектом tscollection
.
Методы для управления данными и время
Метод | Описание |
---|---|
Добавьте объект | |
Добавьте выборки данных в объект | |
Удалите одну или несколько выборок данных из объекта | |
Извлеките временной вектор строки даты от объекта | |
Извлеките выборки данных от существующего объекта | |
Возвратите массив ячеек имен временных рядов в объекте | |
Горизонтальная конкатенация объектов | |
Удалите один или несколько объектов | |
Выберите или интерполируйте данные в объекте | |
Установите временные стоимости во временном векторе объекта | |
Поменяйте имя выбранного объекта | |
Вертикальная конкатенация объектов |