Объекты временных рядов MATLAB ® имеют два типа :
timeseries - хранит данные и временные значения, а также метаданные, которые включают единицы измерения, события, качество данных и метод интерполяции;
tscollection - Хранит коллекцию timeseries объекты с общим вектором времени, удобные для выполнения операций с синхронизированными временными рядами с различными единицами
В этом разделе рассматриваются следующие темы:
Использование конструкторов временных рядов для создания экземпляров классов временных рядов
Изменение свойств объекта с помощью set методы или точечная нотация
Вызов функций и методов временных рядов
Чтобы получить краткий обзор программирования с помощью timeseries и tscollection выполните шаги в примере «Объекты и методы временных рядов».
Чтобы правильно понять описание timeseries свойства и методы объекта в этой документации, важно уточнить некоторые термины, связанные с хранением данных в timeseries object - разница между значением данных и образцом данных.
Значение данных - это одно скалярное значение, записанное в определенное время. Образец данных состоит из одного или нескольких значений, связанных с определенным временем в 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-на-P-по-....
Если требуется выполнить операции с 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. Этот метод недоступен в 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 часов утра.
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 в новой выборке отсутствующие значения представлены 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 свойства см. в разделе Свойства временных рядов.
Интерполяция отсутствующих данных. Ради этого примера снова ввести 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-axis и его единицы данных отображаются на y-axis. Заголовок печати отображается как '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-axis to 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, которая группирует несколько временных рядов с общим вектором времени. timeseries объекты, которые вы включаете в tscollection объекты называются членами этой коллекции и обладают несколькими методами для удобного анализа и манипулирования timeseries.
Перед внедрением методов MATLAB, специально разработанных для работы с коллекцией timeseries объекты, необходимо создать tscollection объект для хранения данных.
В следующей таблице представлен синтаксис использования tscollection конструктор. Пример использования этого конструктора см. в разделе Создание объектов коллекции временных рядов.
Описание синтаксиса коллекции временных рядов
Синтаксис | Описание |
|---|---|
| Создает
|
| Создание пустого Когда значения времени являются строками даты, необходимо указать |
| Дополнительно введите следующие пары параметр-значение после
|
В этой таблице перечислены свойства tscollection объект. Можно указать Name, Time, и TimeInfo свойства в качестве входных аргументов в tscollection конструктор.
Описания свойств коллекции временных рядов
Собственность | Описание |
|---|---|
|
|
| Вектор значений времени. Когда Длина |
| Использует следующие поля для хранения контекстной информации о
|
Общие методы сбора временных рядов. Используйте следующие методы для запроса и установки свойств объекта и печати данных.
Методы запроса свойств
Методы манипулирования данными и временем. Используйте следующие методы для добавления или удаления образцов данных и управления tscollection объект.
Методы управления данными и временем
Метод | Описание |
|---|---|
Добавить | |
Добавление образцов данных в | |
Удаление одного или нескольких образцов данных из | |
Извлечение вектора времени строки даты из | |
Извлечение образцов данных из существующего | |
Возврат массива ячеек имен временных рядов в | |
Горизонтальная конкатенация | |
Удалить один или несколько | |
Выбор или интерполяция данных в | |
Установка значений времени в векторе времени | |
Изменение имени выбранного | |
Вертикальная конкатенация |