Массив расписания со строками с меткой времени и переменными различных типов
timetable
является типом таблицы, которая сопоставляет время с каждой строкой. Как таблицы, расписания могут сохранить переменные данных в столбцах, которые имеют различные типы данных и размеры, пока у них есть то же количество строк. Кроме того, расписания обеспечивают специфичные для времени функции, чтобы выровнять, объединить, и выполнить вычисления с данными с меткой времени в одном или нескольких расписаниях.
Временами строки расписания является datetime
или значения duration
, которые маркируют строки. Можно индексировать в расписание ко времени строки и переменной. Чтобы индексировать в расписание, используйте сглаженные круглые скобки ()
, чтобы возвратить подтаблицу или фигурные скобки {}
, чтобы извлечь содержимое. Можно сослаться на переменные и вектор времен строки с помощью имен. Для получения дополнительной информации об индексации смотрите, Выбирают Timetable Data by Row Time и Variable Type и Access Data в Таблице.
Чтобы создать расписание из таблицы или массива, используйте функции array2timetable
или table2timetable
. Также можно использовать функцию timetable
, описанную ниже.
Когда вы используете функцию timetable
, можно задать вектор времен строки или создать времена строки с помощью частоты дискретизации или временного шага. Кроме того, можно создать расписание с предвыделенным пробелом для переменных, значения которых заполнены в позже.
TT = timetable(rowTimes,var1,...,varN)
TT = timetable(var1,...,varN,'RowTimes',rowTimes)
TT = timetable(var1,...,varN,'SampleRate',Fs)
TT = timetable(var1,...,varN,'TimeStep',dt)
TT = timetable('Size',sz,'VariableTypes',varTypes,'RowTimes',rowTimes)
TT = timetable('Size',sz,'VariableTypes',varTypes,'SampleRate',Fs)
TT = timetable('Size',sz,'VariableTypes',varTypes,'TimeStep',dt)
TT = timetable(___,Name,Value)
создает расписание из переменных входных данных TT = timetable(rowTimes,var1,...,varN)
var1,...,varN
и временной вектор rowTimes
. Переменные данных могут быть различными размерами и типами данных, пока у них есть то же количество строк. rowTimes
должен быть datetime или вектором длительности, также с тем же количеством строк.
задает TT = timetable(var1,...,varN,'RowTimes',rowTimes)
rowTimes
как источник времен строки TT
. Когда вы используете этот синтаксис, именем вектора времен строки TT
всегда является Time
, даже когда rowTimes
является переменной рабочей области с другим именем.
создает расписание с помощью частоты дискретизации TT = timetable(var1,...,varN,'SampleRate',Fs)
Fs
, чтобы вычислить расположенные с равными интервалами времена строки. Fs
является положительным числовым скаляром, который задает количество выборок в секунду (Гц). Первый раз строки является нулевыми секундами.
создает расписание с помощью временного шага TT = timetable(var1,...,varN,'TimeStep',dt)
dt
, чтобы вычислить расположенные с равными интервалами времена строки. dt
является длительностью или календарным значением длительности, которое задает отрезок времени между временами строки подряд. Первый раз строки является нулевыми секундами.
создает расписание и предварительно выделяет пробел для переменных, которые имеют типы данных, которые вы задаете. TT = timetable('Size',sz,'VariableTypes',varTypes,'RowTimes',rowTimes)
sz
является двухэлементным числовым массивом, где sz[1]
задает количество строк, и sz[2]
задает количество переменных. varTypes
является массивом ячеек из символьных векторов, задающим типы данных. Число раз в rowTimes
должно равняться sz[1]
.
предварительно выделяет переменные с типами данных и добавляет времена строки с помощью частоты дискретизации TT = timetable('Size',sz,'VariableTypes',varTypes,'SampleRate',Fs)
Fs
. Первый раз строки является нулевыми секундами.
предварительно выделяет переменные с типами данных и добавляет времена строки с помощью временного шага TT = timetable('Size',sz,'VariableTypes',varTypes,'TimeStep',dt)
dt
. Первый раз строки является нулевыми секундами.
TT = timetable(___,Name,Value)
задает дополнительные входные параметры с помощью одного или нескольких аргументов в виде пар "имя-значение". Например, можно задать имена переменных с помощью пары "имя-значение" 'VariableNames'
. Также можно задать время начала с помощью пары "имя-значение" 'StartTime'
с частотой дискретизации или временным шагом. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.
var1,...,varN
— Входные переменныеВходные переменные, заданные как массивы с тем же количеством строк. Входные переменные могут иметь различные размеры и различные типы данных, пока у них есть то же количество строк.
Общие входные переменные являются числовыми массивами, логическими массивами, массивами строк, массивами структур и массивами ячеек.
Входные переменные также могут быть объектами, которые являются массивами. Такой массив должен поддержать индексацию формы var(index1,...,indexN)
, где index1
является числовым или логическим вектором, который соответствует строкам переменного var
. Кроме того, массив должен реализовать и метод vertcat
и метод size
с аргументом dim
.
rowTimes
Времена сопоставлены со строками расписанияВремена, сопоставленные со строками расписания, заданного как вектор datetime или вектор длительности. Каждый раз маркирует строку в выходном расписании, TT
. Временные стоимости в rowTimes
не должны быть уникальными, не отсортированы, или регулярными.
Типы данных: datetime
| длительность
sz
— Размер предвыделенного расписанияРазмер предвыделенного расписания, заданного как двухэлементный числовой вектор. Первый элемент sz
задает количество строк, и второй элемент задает количество переменных расписания.
varTypes
— Типы данных предвыделенных переменныхТипы данных предвыделенных переменных, заданных как массив ячеек из символьных векторов или массив строк. Количество типов, заданных varTypes
, должно равняться количеству переменных, заданных вторым элементом sz
.
varTypes
может содержать имена любых типов данных, включая имена, показанные в таблице.
Имя типа данных | Начальное значение в каждом элементе |
---|---|
| Дважды - или |
| Дважды - или |
| Подписанный 8-, 16-, 32-, или 64-битный целочисленный |
| 8-без знака, 16-, 32-, или 64-битный целочисленный |
|
|
|
|
| Значение datetime |
| Секунды |
| Дни |
|
|
|
|
|
|
| Скалярная структура без полей |
| Таблица без переменных |
Для любого другого типа данных начальное значение является значением, используемым тем типом, или класс к "заполнению" отменил присвоение элементов массива.
Если вы задаете 'char'
как тип данных, то timetable
предварительно выделяет соответствующую переменную как массив ячеек из символьных векторов, не как символьный массив. Лучшая практика состоит в том, чтобы не составлять переменные таблицы или расписания, которые являются символьными массивами. При работе с текстовыми данными в таблице или расписании, рассмотрите использование массива строк или категориального массива.
Fs
— Частота дискретизацииЧастота дискретизации, заданная в виде положительного числа. Fs
задает количество выборок в секунду (Гц).
dt
Временной шагВременной шаг, заданный как скаляр длительности.
Если вы задаете dt
как календарную длительность, и вы задаете аргумент в виде пар "имя-значение" 'StartTime'
, то значение 'StartTime'
должно быть скаляром datetime.
Типы данных: длительность
| calendarDuration
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Имя
должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
TT = расписание (rowTimes, T, W, 'VariableNames', {'Температура', 'Скорость ветра'})
создает расписание из входных массивов T и W
и называет соответствующую Температуру
переменных расписания и WindSpeed
.Имена переменных
Имена переменныхИмена переменных, заданные как пара, разделенная запятой, состоящая из 'VariableNames'
и массива ячеек из символьных векторов или массива строк. Количество имен в массиве должно равняться количеству табличных переменных.
Время начала
Время началаВремя начала, заданное как пара, разделенная запятой, состоящая из 'StartTime'
и скаляра datetime или скаляра длительности. Время начала является также временем строки первой строки расписания.
Можно задать 'StartTime'
только, когда вы также задаете аргумент в виде пар "имя-значение" 'TimeStep'
или 'SampleRate'
.
Если время начала является значением datetime, то времена строки TT
являются значениями datetime.
Если время начала является длительностью, то времена строки являются длительностью.
Если временной шаг, dt
является календарным значением длительности, то время начала должно быть значением datetime.
Типы данных: datetime
| длительность
Access Timetable Metadata Properties
Расписание содержит свойства метаданных, которые описывают расписание, его времена строки и его переменные. Доступ к этим свойствам с помощью синтаксиса
, где timetableName.Properties.PropertyName
является именем свойства. Например, можно получить доступ к именам переменных в расписании PropertyName
TT
через свойство TT.Properties.VariableNames
.
Можно возвратить сводные данные свойств метаданных с помощью синтаксиса
Свойства.timetableName.Properties
Расписания обеспечивают доступ к метаданным через свойство Properties
, потому что можно получить доступ к данным расписания непосредственно с помощью точечного синтаксиса. Например, если расписание, TT
имеет переменную под названием Var1
, то можно получить доступ к переменной с помощью синтаксиса TT.Var1
, получив доступ к значениям в массиве.
DimensionNames
DimensionNames {'Time','Variables'}
(значение по умолчанию) | двухэлементный массив ячеек из символьных векторов | двухэлементный массив строкИмена размерности, заданные как двухэлементный массив ячеек из символьных векторов или двухэлементный массив строк.
Можно получить доступ к данным расписания с помощью двух имен размерности. При использовании точечный синтаксис и первое имя размерности, то можно получить доступ ко временам строки как к вектору. При использовании точечный синтаксис и имя второго измерения, то данные от всех переменных конкатенированы вместе в одном массиве, как будто вы индексировали в расписание с помощью {:,:}
Синтаксис.
Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.
Создайте расписание и отобразите его имена размерности. Можно получить доступ ко временам строки и данным с помощью имен размерности с точечным синтаксисом.
TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ... [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]); TT.Properties.DimensionNames
ans = 1×2 cell array
{'Time'} {'Variables'}
Доступ ко временам строки с помощью первого имени размерности.
TT.Time
ans = 3×1 datetime array
18-Dec-2015
19-Dec-2015
20-Dec-2015
Доступ к данным с помощью имени второго измерения. Этот синтаксис эквивалентен TT{:,:,}
.
TT.Variables
ans = 3×3
37.3000 30.1000 13.4000
39.1000 30.0300 6.5000
42.3000 29.9000 7.3000
Измените имена его размерностей с помощью свойства Properties.DimensionNames
. Поменяв имена размерности, можно получить доступ ко временам строки и данным с помощью синтаксисов TT.Date
и TT.WeatherData
соответственно.
TT.Properties.DimensionNames = {'Date','WeatherData'}; TT.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Date' 'WeatherData'} VariableNames: {'Var1' 'Var2' 'Var3'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: [3×1 datetime] StartTime: 18-Dec-2015 SampleRate: NaN TimeStep: 1d CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
Описание
Описание расписания''
(значение по умолчанию) | вектор символа | представляет скаляр в виде строкиОписание расписания, заданное как вектор символа или скаляр строки. Это описание видимо при использовании функции summary
.
Если вы задаете это свойство с помощью скаляра строки, то оно преобразовано и сохранено как вектор символа.
Создайте расписание. Измените имена переменных и описание расписания. Отобразите сводные данные результата.
TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ... [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]); TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'}; TT.Properties.Description = 'Weather Data from December 2015'; summary(TT)
Description: Weather Data from December 2015 RowTimes: Time: 3×1 datetime Values: Min 18-Dec-2015 Median 19-Dec-2015 Max 20-Dec-2015 TimeStep 24:00:00 Variables: Temp: 3×1 double Values: Min 37.3 Median 39.1 Max 42.3 Pressure: 3×1 double Values: Min 29.9 Median 30.03 Max 30.1 WindSpeed: 3×1 double Values: Min 6.5 Median 7.3 Max 13.4
UserData
Дополнительная информация о расписании[]
(значение по умолчанию) | массивДополнительная информация о расписании, заданная как массив. Можно присоединить данные любого вида к расписанию с помощью этого свойства.
Создайте расписание. Измените имена переменных. Присоедините анонимную функцию как часть пользовательских данных, которая сопоставлена с расписанием.
TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ... [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]); TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'}; Fahrenheit2Celsius = @(x) (5.0/9.0).*(x - 32); TT.Properties.UserData = Fahrenheit2Celsius; TT.Properties
ans = TimetableProperties with properties: Description: '' UserData: @(x)(5.0/9.0).*(x-32) DimensionNames: {'Time' 'Variables'} VariableNames: {'Temp' 'Pressure' 'WindSpeed'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: [3×1 datetime] StartTime: 18-Dec-2015 SampleRate: NaN TimeStep: 1d CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
RowTimes
RowTimes Времена строки, заданные как вектор datetime или вектор длительности. Должно быть время строки для каждой строки расписания. Однако расписание может иметь времена строки, которые являются копиями, не в порядке, или значениями NaN
или NaT
.
Времена строки видимы, когда вы просматриваете расписание. Кроме того, можно использовать времена строки в круглых скобках или фигурных скобках, чтобы получить доступ к данным расписания.
Другой способ получить доступ ко временам строки состоит в том, чтобы использовать точечный синтаксис и имя первой размерности таблицы.
Создайте расписание. Затем замените его времена строки с помощью свойства Properties.RowTimes
.
TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ... [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3])
TT=3×3 timetable
Time Var1 Var2 Var3
___________ ____ _____ ____
18-Dec-2015 37.3 30.1 13.4
19-Dec-2015 39.1 30.03 6.5
20-Dec-2015 42.3 29.9 7.3
Dates = datetime(2017,1,1:3); TT.Properties.RowTimes = Dates
TT=3×3 timetable
Time Var1 Var2 Var3
___________ ____ _____ ____
01-Jan-2017 37.3 30.1 13.4
02-Jan-2017 39.1 30.03 6.5
03-Jan-2017 42.3 29.9 7.3
Другой способ получить доступ ко временам строки при помощи точечного синтаксиса с именем первой размерности расписания.
TT.Properties.DimensionNames
ans = 1×2 cell array
{'Time'} {'Variables'}
TT.Time
ans = 3×1 datetime array
01-Jan-2017
02-Jan-2017
03-Jan-2017
Время начала
Время начала времен строкиВремя начала времен строки, заданных как скаляр datetime или скаляр длительности. Время начала равно времени строки для первой строки расписания и имеет совпадающий тип данных.
Если время начала является datetime, то времена строки TT
являются значениями datetime.
Если время начала является длительностью, то времена строки являются длительностью.
Если временной шаг является календарной длительностью, то время начала должно быть значением datetime.
Если расписание пусто, то временем начала является NaN
.
Создайте расписание. В этом расписании временной шаг между последовательными строками не является тем же самым, таким образом, расписание неправильно.
TT = timetable(datetime({'2015-12-18';'2015-12-20';'2015-12-21'}), ... [37.3;39.1;42.3],[13.4;6.5;7.3],{'N';'SE';'NW'}); TT.Properties.VariableNames = {'Temperature','WindSpeed','WindDirection'}
TT=3×3 timetable
Time Temperature WindSpeed WindDirection
___________ ___________ _________ _____________
18-Dec-2015 37.3 13.4 'N'
20-Dec-2015 39.1 6.5 'SE'
21-Dec-2015 42.3 7.3 'NW'
Отобразите его свойства. Значение свойства StartTime
равно первому разу строки. Обычно ли расписание или неправильно, оно всегда имеет время начала, если это не пусто.
TT.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Time' 'Variables'} VariableNames: {'Temperature' 'WindSpeed' 'WindDirection'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: [3×1 datetime] StartTime: 18-Dec-2015 SampleRate: NaN TimeStep: NaN CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
Измените свойство StartTime
. Обратите внимание на то, что все времена строки имеют новые значения. В течение каждого раза строки изменение в значении равно различию между исходным значением первого раза строки и новым временем начала.
TT.Properties.StartTime = datetime('2018-04-09')
TT=3×3 timetable
Time Temperature WindSpeed WindDirection
____________________ ___________ _________ _____________
09-Apr-2018 00:00:00 37.3 13.4 'N'
11-Apr-2018 00:00:00 39.1 6.5 'SE'
12-Apr-2018 00:00:00 42.3 7.3 'NW'
SampleRate
— Частота дискретизацииЧастота дискретизации, заданная в виде положительного числа. Частота дискретизации является количеством выборок в секунду (Гц).
Если времена строки не являются регулярными, или расписание пусто, то частотой дискретизации является NaN
.
TimeStep
— Временной шагВременной шаг, заданный как скаляр длительности.
Если вы задаете временной шаг как календарную длительность (например, календарные месяцы), то вектор времен строки должен быть вектором datetime.
Если вы задаете временной шаг как длительность (например, секунды), то вектор времен строки или может быть datetime или вектором длительности.
Если времена строки не являются регулярными, или расписание пусто, то временным шагом является NaN
.
Создайте обычное расписание. В этом расписании времена строки являются длительностью, созданное использование того же временного шага.
Intensity = [100;98.7;95.2;101.4;99.1];
TT = timetable(Intensity,'TimeStep',seconds(0.01))
TT=5×1 timetable
Time Intensity
________ _________
0 sec 100
0.01 sec 98.7
0.02 sec 95.2
0.03 sec 101.4
0.04 sec 99.1
Отобразите его свойства. Свойство TimeStep
хранит временной шаг как длительность.
TT.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Time' 'Variables'} VariableNames: {'Intensity'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: [5×1 duration] StartTime: 0 sec SampleRate: 100 TimeStep: 0.01 sec CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
Измените свойство TimeStep
. Время начала является тем же самым, но все другие времена строки отличаются, потому что временной шаг больше. Однако переменный Intensity
остается то же самое.
TT.Properties.TimeStep = seconds(0.04)
TT=5×1 timetable
Time Intensity
________ _________
0 sec 100
0.04 sec 98.7
0.08 sec 95.2
0.12 sec 101.4
0.16 sec 99.1
Типы данных: длительность
| calendarDuration
Имена переменных
Имена переменныхИмена переменных, заданные как массив ячеек из символьных векторов или массив строк, с именами, которые непусты и отличны. Имена переменных должны быть допустимыми идентификаторами MATLAB®. Можно определить допустимые имена переменной с помощью функционального isvarname
. MATLAB удаляет любое продвижение или запаздывающий пробел от векторов символов. Количество векторов символов должно равняться количеству переменных.
Если вы не задаете имена переменных, или вы задаете недопустимые идентификаторы, то MATLAB использует массив ячеек векторов символов N
формы
, где {'Var1' ... 'VarN'}
N
является количеством переменных.
Имена переменных видимы при просмотре расписания и при использовании функции summary
. Кроме того, можно использовать имена переменных в круглых скобках в фигурных скобках, или с индексацией точки, чтобы получить доступ к данным расписания.
Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.
Создайте расписание с именами переменных по умолчанию. Затем измените имена с помощью свойства Properties.VariableNames
.
TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ... [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3])
TT=3×3 timetable
Time Var1 Var2 Var3
___________ ____ _____ ____
18-Dec-2015 37.3 30.1 13.4
19-Dec-2015 39.1 30.03 6.5
20-Dec-2015 42.3 29.9 7.3
TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'}
TT=3×3 timetable
Time Temp Pressure WindSpeed
___________ ____ ________ _________
18-Dec-2015 37.3 30.1 13.4
19-Dec-2015 39.1 30.03 6.5
20-Dec-2015 42.3 29.9 7.3
Основной способ отобразиться и изменить переменные состоит в том, чтобы получить доступ к ним по наименованию использующий точечный синтаксис.
TT.Temp
ans = 3×1
37.3000
39.1000
42.3000
TT.Pressure(3) = 30
TT=3×3 timetable
Time Temp Pressure WindSpeed
___________ ____ ________ _________
18-Dec-2015 37.3 30.1 13.4
19-Dec-2015 39.1 30.03 6.5
20-Dec-2015 42.3 30 7.3
VariableDescriptions
VariableDescriptions {}
(значение по умолчанию) | массив ячеек из символьных векторов | массив строкОписания переменной, заданные как массив ячеек из символьных векторов или массив строк. Это свойство может быть массивом пустой ячейки, который является значением по умолчанию. Если массив не пуст, то он должен содержать столько же элементов, сколько существуют переменные. Можно задать отдельный пустой символьный вектор или пустую строку для переменной, которая не имеет описания.
Описания переменной видимы при использовании функции summary
.
Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.
Создайте расписание. Измените имена переменных и описания. Отобразите сводные данные результата.
TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ... [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]); TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'}; TT.Properties.VariableDescriptions = {'Temperature (external)', ... 'Pressure in Hg', ... 'Wind speed at sensor 123'}; summary(TT)
RowTimes: Time: 3×1 datetime Values: Min 18-Dec-2015 Median 19-Dec-2015 Max 20-Dec-2015 TimeStep 24:00:00 Variables: Temp: 3×1 double Properties: Description: Temperature (external) Values: Min 37.3 Median 39.1 Max 42.3 Pressure: 3×1 double Properties: Description: Pressure in Hg Values: Min 29.9 Median 30.03 Max 30.1 WindSpeed: 3×1 double Properties: Description: Wind speed at sensor 123 Values: Min 6.5 Median 7.3 Max 13.4
VariableUnits
VariableUnits {}
(значение по умолчанию) | массив ячеек из символьных векторов | массив строкПеременные модули, заданные как массив ячеек из символьных векторов или массив строк. Это свойство может быть массивом пустой ячейки, который является значением по умолчанию. Если массив не пуст, то он должен содержать столько же элементов, сколько существуют переменные. Можно задать отдельный пустой символьный вектор или пустую строку для переменной, которая не имеет модулей.
Переменные модули видимы при использовании функции summary
.
Если вы задаете это свойство с помощью массива строк, то оно преобразовано и сохранено как массив ячеек из символьных векторов.
Создайте расписание. Измените имена переменных и модули. Отобразите сводные данные результата.
TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ... [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]); TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'}; TT.Properties.VariableUnits = {'degrees F','mm Hg','mph'}; summary(TT)
RowTimes: Time: 3×1 datetime Values: Min 18-Dec-2015 Median 19-Dec-2015 Max 20-Dec-2015 TimeStep 24:00:00 Variables: Temp: 3×1 double Properties: Units: degrees F Values: Min 37.3 Median 39.1 Max 42.3 Pressure: 3×1 double Properties: Units: mm Hg Values: Min 29.9 Median 30.03 Max 30.1 WindSpeed: 3×1 double Properties: Units: mph Values: Min 6.5 Median 7.3 Max 13.4
VariableContinuity
Состояние как непрерывные или дискретные переменные[]
(значение по умолчанию) | массив ячеек из символьных векторов | массив строкСостояние как непрерывные или дискретные переменные, заданные как массив ячеек из символьных векторов или массив строк. Это свойство может быть пустым массивом, который является значением по умолчанию. Если массив не пуст, то он должен содержать столько же элементов, сколько существуют переменные. Каждым элементом может быть или 'unset'
, 'continuous'
, 'step'
или 'event'
.
Значения в VariableContinuity
влияют, как retime
или функции synchronize
работают. Если вы задаете VariableContinuity
и вызываете retime
или synchronize
, то вы не должны задавать метод. Вместо этого retime
и synchronize
заполняют выходные переменные расписания с помощью следующих методов по умолчанию:
'unset'
— Заполните использование значений недостающий индикатор данных для того типа (такого как NaN
для числовых переменных).
'continuous'
— Заполните значения с помощью линейной интерполяции.
шаг
Заполните значения с помощью предыдущего значения.
событие
Заполните использование значений недостающий индикатор данных для того типа (такого как NaN
для числовых переменных).
Если вы действительно задаете метод как входной параметр к retime
или synchronize
, то тот метод заменяет значения, которые вы задаете в VariableContinuity
.
Для получения дополнительной информации об использовании свойства VariableContinuity
смотрите, Повторно синхронизируют и Синхронизируют Переменные Расписания Используя Различные Методы.
Создайте расписание. Задайте значение matlab.tabular.Continuity
для каждой переменной.
TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ... [37.3;39.1;42.3],[13.4;6.5;7.3],{'N';'SE';'NW'}); TT.Properties.VariableNames = {'Temperature','WindSpeed','WindDirection'}; TT.Properties.VariableContinuity = {'continuous','event','event'}; TT.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Time' 'Variables'} VariableNames: {'Temperature' 'WindSpeed' 'WindDirection'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [continuous event event] RowTimes: [3×1 datetime] StartTime: 18-Dec-2015 SampleRate: NaN TimeStep: 1d CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
Custom Properties
Индивидуально настраиваемые метаданные расписания и его переменныхCustomProperties
Индивидуально настраиваемые метаданные расписания и его переменных, заданных как объект CustomProperties
.
Объект CustomProperties
является контейнером для индивидуально настраиваемых метаданных, которые можно добавить к расписанию. По умолчанию CustomProperties
имеет нулевые свойства. Каждое свойство, которое вы добавляете к CustomProperties
, может содержать или табличные метаданные или переменные метаданные. Если свойство содержит переменные метаданные, то его значение должно быть массивом, и число элементов в массиве должно равняться количеству переменных расписания.
Чтобы добавить свойства для индивидуально настраиваемых метаданных к расписанию, используйте функцию addprop
.
Чтобы получить доступ или изменить настроенные метаданные, используйте синтаксис
. В этом синтаксисе, timetableName.Properties.CustomProperties.PropertyName
является именем, которое вы выбрали, когда вы добавили то свойство с помощью PropertyName
addprop
.
Чтобы удалить свойства, используйте функцию rmprop
.
Примечание: Можно добавить или удалить только свойства для индивидуально настраиваемых метаданных с помощью addprop
и rmprop
. Вы не можете добавить или удалить свойства
Объект timetableName
.Properties
.
Создайте расписание, содержащее данные о погоде.
TT = timetable(datetime({'2015-12-18';'2015-12-20';'2015-12-21'}), ... [37.3;39.1;42.3],[13.4;6.5;7.3],{'N';'SE';'NW'}); TT.Properties.VariableNames = {'Temperature','WindSpeed','WindDirection'}
TT=3×3 timetable
Time Temperature WindSpeed WindDirection
___________ ___________ _________ _____________
18-Dec-2015 37.3 13.4 'N'
20-Dec-2015 39.1 6.5 'SE'
21-Dec-2015 42.3 7.3 'NW'
Чтобы описать инструменты, которые измерили эти данные и имя выходного файла, добавляют, настроенные метаданные с помощью функции addprop
. Свойство Instruments
имеет переменные метаданные, которые применяются к переменным TT
. Свойство OutputFile
имеет табличные метаданные.
TT = addprop(TT,{'Instruments','OutputFile'},{'variable','table'}); TT.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Time' 'Variables'} VariableNames: {'Temperature' 'WindSpeed' 'WindDirection'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: [3×1 datetime] StartTime: 18-Dec-2015 SampleRate: NaN TimeStep: NaN Custom Properties (access using t.Properties.CustomProperties.<name>): OutputFile: [] Instruments: []
Присвойте значения индивидуально настраиваемым метаданным с помощью точечного синтаксиса. Когда вы присваиваете массив текстовых значений к индивидуально настраиваемым метаданным, лучшая практика состоит в том, чтобы использовать массив строк, не массив ячеек из символьных векторов. Если свойство CustomProperties
является массивом ячеек из символьных векторов, то нет никакого механизма, чтобы предотвратить вас от более поздних нетекстовых значений присвоения как элементы массива ячеек.
TT.Properties.CustomProperties.Instruments = ["thermometer","anemometer","wind vane"]; TT.Properties.CustomProperties.OutputFile = 'weatherReadings.csv'; TT.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Time' 'Variables'} VariableNames: {'Temperature' 'WindSpeed' 'WindDirection'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: [3×1 datetime] StartTime: 18-Dec-2015 SampleRate: NaN TimeStep: NaN Custom Properties (access using t.Properties.CustomProperties.<name>): OutputFile: 'weatherReadings.csv' Instruments: ["thermometer" "anemometer" "wind vane"]
Удалите свойство OutputFile
из TT
.
TT = rmprop(TT,'OutputFile');
TT.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Time' 'Variables'} VariableNames: {'Temperature' 'WindSpeed' 'WindDirection'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: [3×1 datetime] StartTime: 18-Dec-2015 SampleRate: NaN TimeStep: NaN Custom Properties (access using t.Properties.CustomProperties.<name>): Instruments: ["thermometer" "anemometer" "wind vane"]
Храните данные о погодных условиях, измеренных в разное время в расписании. Кроме устройства хранения данных, расписания обеспечивают функции, чтобы синхронизировать данные с временами, которые вы задаете. Кроме того, можно аннотировать расписание, чтобы описать работу и переменные расписания.
Создайте расписание из переменных рабочей области. Значения в MeasurementTime
становятся временами строки расписания. Все другие входные параметры становятся переменными расписания. Когда вы используете этот синтаксис, имена вектора времен строки и переменные TT
являются именами соответствующих входных параметров.
MeasurementTime = datetime({'2015-12-18 08:03:05';'2015-12-18 10:03:17';'2015-12-18 12:03:13'}); Temp = [37.3;39.1;42.3]; Pressure = [30.1;30.03;29.9]; WindSpeed = [13.4;6.5;7.3]; TT = timetable(MeasurementTime,Temp,Pressure,WindSpeed)
TT=3×3 timetable
MeasurementTime Temp Pressure WindSpeed
____________________ ____ ________ _________
18-Dec-2015 08:03:05 37.3 30.1 13.4
18-Dec-2015 10:03:17 39.1 30.03 6.5
18-Dec-2015 12:03:13 42.3 29.9 7.3
Синхронизируйте данные о погоде с постоянными временами с почасовым временным шагом. Настройте данные к новым временам с помощью линейной интерполяции.
TT2 = retime(TT,'hourly','linear')
TT2=6×3 timetable
MeasurementTime Temp Pressure WindSpeed
____________________ ______ ________ _________
18-Dec-2015 08:00:00 37.254 30.102 13.577
18-Dec-2015 09:00:00 38.152 30.067 10.133
18-Dec-2015 10:00:00 39.051 30.032 6.6885
18-Dec-2015 11:00:00 40.613 29.969 6.8783
18-Dec-2015 12:00:00 42.214 29.903 7.2785
18-Dec-2015 13:00:00 43.815 29.838 7.6788
Поскольку времена строки вывода не являются измеренными временами, переименовывают вектор времен строки. Этот вектор является также именем первой размерности расписания.
TT2.Properties.DimensionNames{1} = 'InterpolatedTimes'
TT2=6×3 timetable
InterpolatedTimes Temp Pressure WindSpeed
____________________ ______ ________ _________
18-Dec-2015 08:00:00 37.254 30.102 13.577
18-Dec-2015 09:00:00 38.152 30.067 10.133
18-Dec-2015 10:00:00 39.051 30.032 6.6885
18-Dec-2015 11:00:00 40.613 29.969 6.8783
18-Dec-2015 12:00:00 42.214 29.903 7.2785
18-Dec-2015 13:00:00 43.815 29.838 7.6788
Аннотируйте TT2
описанием. Можно аннотировать TT2
, и его переменные с помощью метаданных получили доступ через TT2.Properties
Свойства.
TT2.Properties.Description = 'Weather data, interpolated to regular hourly times';
TT2.Properties
ans = TimetableProperties with properties: Description: 'Weather data, interpolated to regular hourly times' UserData: [] DimensionNames: {'InterpolatedTimes' 'Variables'} VariableNames: {'Temp' 'Pressure' 'WindSpeed'} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: [6x1 datetime] StartTime: 18-Dec-2015 08:00:00 SampleRate: 2.7778e-04 TimeStep: 01:00:00 CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
Можно использовать точечный синтаксис, чтобы получить доступ ко временам строки расписания. Кроме того, можно получить доступ к отдельным переменным с помощью точечного синтаксиса или всех данных в расписании с помощью его имени второго измерения.
Загрузите расписание из MAT-файла outdoors
. Отобразите первые три строки.
load outdoors
outdoors(1:3,:)
ans=3×3 timetable
Time Humidity TemperatureF PressureHg
___________________ ________ ____________ __________
2015-11-15 00:00:24 49 51.3 29.61
2015-11-15 01:30:24 48.9 51.5 29.61
2015-11-15 03:00:24 48.9 51.5 29.61
Доступ ко временам строки с помощью имени вектора времен строки. Это имя является также именем первой размерности расписания. outdoors
хранит времена строки как вектор datetime. Отобразитесь первые три раза.
outdoors.Time(1:3)
ans = 3x1 datetime array
2015-11-15 00:00:24
2015-11-15 01:30:24
2015-11-15 03:00:24
Доступ к температурам как числовой вектор, с помощью его имени переменной.
outdoors.TemperatureF(1:3)
ans = 3×1
51.3000
51.5000
51.5000
Доступ ко всем данным расписания как матрица, с помощью синтаксиса outdoors.Variables
Переменные. Этот синтаксис использует имя второго измерения расписания и эквивалентен доступу ко всему содержимому, использующему изогнутую индексацию фигурной скобки, outdoors{:,:}
. Однако матрица не включает времена строки, потому что вектор времен строки является метаданными расписания, не переменной. Если данные расписания не могут быть конкатенированы в матрицу, то сообщение об ошибке повышено.
outdoors.Variables
ans = 51×3
49.0000 51.3000 29.6100
48.9000 51.5000 29.6100
48.9000 51.5000 29.6100
48.8000 51.5000 29.6100
48.7000 51.5000 29.6000
48.8000 51.5000 29.6000
49.0000 51.5000 29.6000
49.1000 51.3000 29.6000
49.1000 51.3000 29.6100
49.1000 51.5000 29.6100
⋮
Переименуйте второе измерение outdoors
. Если вы меняете имя, то можно использовать новое имя, чтобы получить доступ к данным.
outdoors.Properties.DimensionNames{2} = 'Data';
outdoors.Data
ans = 51×3
49.0000 51.3000 29.6100
48.9000 51.5000 29.6100
48.9000 51.5000 29.6100
48.8000 51.5000 29.6100
48.7000 51.5000 29.6000
48.8000 51.5000 29.6000
49.0000 51.5000 29.6000
49.1000 51.3000 29.6000
49.1000 51.3000 29.6100
49.1000 51.5000 29.6100
⋮
Создайте расписание с помощью аргумента в виде пар "имя-значение" 'RowTimes'
. Обратите внимание на то, что именем вектора времен строки TT
является Time
, не MeasurementTime
. Когда вы используете этот синтаксис, именем вектора времен строки всегда является Time
.
MeasurementTime = datetime({'2015-12-18 08:03:05';'2015-12-18 10:03:17';'2015-12-18 12:03:13'}); Temp = [37.3;39.1;42.3]; Pressure = [29.4;29.6;30.0]; Precip = [0.1;0.9;0.0]; StormDuration = [hours(1);hours(2);NaN]; TT = timetable(Temp,Pressure,Precip,StormDuration,'RowTimes',MeasurementTime)
TT=3×4 timetable
Time Temp Pressure Precip StormDuration
____________________ ____ ________ ______ _____________
18-Dec-2015 08:03:05 37.3 29.4 0.1 1 hr
18-Dec-2015 10:03:17 39.1 29.6 0.9 2 hr
18-Dec-2015 12:03:13 42.3 30 0 NaN hr
Создайте расписание. Если существуют входные параметры, которые не являются переменными рабочей области, то функция timetable
присваивает имена по умолчанию к соответствующему вектору времен строки и переменным расписания. Например, если вы транспонируете некоторые входные параметры, чтобы сделать их векторами - столбцами, затем те входные параметры не являются переменными рабочей области. Именами по умолчанию является Time
для вектора времен строки и VarN
для N
th переменная расписания.
T = hours(1:3); Temp = [37.3;39.1;42.3]; P = [29.4 29.6 30]; TT = timetable(T',Temp,P')
TT=3×2 timetable
Time Temp Var2
____ ____ ____
1 hr 37.3 29.4
2 hr 39.1 29.6
3 hr 42.3 30
Создайте обычное расписание с помощью частоты дискретизации 100 Гц.
Intensity = [100;98.7;95.2;101.4;99.1];
TT = timetable(Intensity,'SampleRate',100)
TT=5×1 timetable
Time Intensity
________ _________
0 sec 100
0.01 sec 98.7
0.02 sec 95.2
0.03 sec 101.4
0.04 sec 99.1
Создайте расписание с 30 секундами как первый раз строки. Чтобы задать время начала, используйте аргумент в виде пар "имя-значение" 'StartTime'
.
TT = timetable(Intensity,'SampleRate',100,'StartTime',seconds(30))
TT=5×1 timetable
Time Intensity
_________ _________
30 sec 100
30.01 sec 98.7
30.02 sec 95.2
30.03 sec 101.4
30.04 sec 99.1
Создайте обычное расписание с помощью временного шага 0,01 секунд. Необходимо задать временной шаг как длительность или календарное значение длительности.
Intensity = [100;98.7;95.2;101.4;99.1];
TT = timetable(Intensity,'TimeStep',seconds(0.01))
TT=5×1 timetable
Time Intensity
________ _________
0 sec 100
0.01 sec 98.7
0.02 sec 95.2
0.03 sec 101.4
0.04 sec 99.1
Создайте расписание с 30 секундами как первый раз строки. Чтобы задать время начала, используйте аргумент в виде пар "имя-значение" 'StartTime'
.
TT = timetable(Intensity,'TimeStep',seconds(0.01),'StartTime',seconds(30))
TT=5×1 timetable
Time Intensity
_________ _________
30 sec 100
30.01 sec 98.7
30.02 sec 95.2
30.03 sec 101.4
30.04 sec 99.1
Предварительно выделите таблицу путем определения ее размера и типов данных переменных. Функция timetable
заполняет переменные со значениями по умолчанию, которые подходят для типов данных, которые вы задаете. Это также дает имена по умолчанию переменных.
T = [datetime('now') datetime(2017,11,1:3)]; sz = [4 3]; varTypes = {'double','double','string'}; TT = timetable('Size',sz,'VariableTypes',varTypes,'RowTimes',T)
TT=4×3 timetable
Time Var1 Var2 Var3
____________________ ____ ____ _________
21-Aug-2018 18:45:00 0 0 <missing>
01-Nov-2017 00:00:00 0 0 <missing>
02-Nov-2017 00:00:00 0 0 <missing>
03-Nov-2017 00:00:00 0 0 <missing>
Чтобы задать имена для переменных, используйте аргумент в виде пар "имя-значение" 'VariableNames'
.
varNames = {'Temperature','WindSpeed','Station'}; TT = timetable('Size',sz,'VariableTypes',varTypes,'RowTimes',T,'VariableNames',varNames)
TT=4×3 timetable
Time Temperature WindSpeed Station
____________________ ___________ _________ _________
21-Aug-2018 18:45:00 0 0 <missing>
01-Nov-2017 00:00:00 0 0 <missing>
02-Nov-2017 00:00:00 0 0 <missing>
03-Nov-2017 00:00:00 0 0 <missing>
Добавьте строку данных к TT
. Предварительное выделение может быть полезным методом, когда ваш код добавляет одну строку данных или несколько строк данных, за один раз. Вместо того, чтобы вырастить расписание каждый раз, когда вы добавляете строку, можно заполнить табличные переменные, которые уже имеют пространство для данных. Можно инкапсулировать строку значений данных в массиве ячеек и присвоить его строке расписания.
Индекс в строку к ее времени и присвоению строка значений данных. Вы также можете, преобразовывая в нижний индекс в строки и переменные номером. Однако индексирование в расписание ко времени является полезным методом.
TT(datetime(2017,11,2),:) = {48.2,13.33,"S1"}
TT=4×3 timetable
Time Temperature WindSpeed Station
____________________ ___________ _________ _________
21-Aug-2018 18:45:00 0 0 <missing>
01-Nov-2017 00:00:00 0 0 <missing>
02-Nov-2017 00:00:00 48.2 13.33 "S1"
03-Nov-2017 00:00:00 0 0 <missing>
Можно инкапсулировать строку значений данных в массиве ячеек. Когда вы присваиваете строку от массива ячеек, присвоение преобразовывает массив ячеек в строку расписания.
Задайте частоту дискретизации 1 000 Гц и предварительно выделите расписание. Также можно задать время начала.
sz = [4 3]; varTypes = {'uint64','double','duration'}; TT = timetable('Size',sz,'VariableTypes',varTypes,'SampleRate',1000,'StartTime',seconds(15))
TT=4×3 timetable
Time Var1 Var2 Var3
__________ ____ ____ ________
15 sec 0 0 00:00:00
15.001 sec 0 0 00:00:00
15.002 sec 0 0 00:00:00
15.003 sec 0 0 00:00:00
Индексируйте в третью строку, путем определения ее времени, и добавьте строку данных.
TT(seconds(15.002),:) = {50,1.37,minutes(76)}
TT=4×3 timetable
Time Var1 Var2 Var3
__________ ____ ____ ________
15 sec 0 0 00:00:00
15.001 sec 0 0 00:00:00
15.002 sec 50 1.37 01:16:00
15.003 sec 0 0 00:00:00
Задайте временной шаг и имена для переменных.
sz = [3 2]; varTypes = {'double','double'}; TT = timetable('Size',sz,'VariableTypes',varTypes,'TimeStep',seconds(0.1),'VariableNames',{'Intensity','Distance'})
TT=3×2 timetable
Time Intensity Distance
_______ _________ ________
0 sec 0 0
0.1 sec 0 0
0.2 sec 0 0
Индексируйте во вторую строку, путем определения ее времени, и добавьте строку данных.
TT(seconds(0.1),:) = {93.6,11.27}
TT=3×2 timetable
Time Intensity Distance
_______ _________ ________
0 sec 0 0
0.1 sec 93.6 11.27
0.2 sec 0 0
Создайте расписание и задайте имена переменных расписания. Вектор времен строки является вектором длительности, модули которого являются секундами.
Time = seconds(1:5)'; TT = timetable(Time,[98;97.5;97.9;98.1;97.9],[120;111;119;117;116],... 'VariableNames',{'Reading1','Reading2'})
TT=5×2 timetable
Time Reading1 Reading2
_____ ________ ________
1 sec 98 120
2 sec 97.5 111
3 sec 97.9 119
4 sec 98.1 117
5 sec 97.9 116
Используйте одинарные кавычки для этих входных имен:
RowTimes
'SampleRate'
размер
Время начала
'TimeStep'
VariableTypes
Имена переменных
Чтобы избежать беспорядка с вводами переменной, не используйте дважды заключенные в кавычки скаляры строки (такие как "RowTimes"
) для этих имен.
Для списка функций, которые принимают или возвращают расписания, см. Расписания.
Не рекомендуемый запуск в R2018b
Аргумент в виде пар "имя-значение" 'SamplingRate'
не рекомендуется. Используйте 'SampleRate'
вместо этого. Соответствующее свойство расписания также называют SampleRate
.
Для обратной совместимости все еще можно задать 'SamplingRate'
как имя пары "имя-значение". Однако значение присвоено свойству SampleRate
.
Эта функция полностью поддерживает длинные массивы с этими указаниями по применению.
Создание. Существует несколько способов создать длинное расписание:
Преобразуйте существующую длинную таблицу с помощью table2timetable
.
ds = datastore('data/folder/path.csv'); tt = tall(ds); TT = table2timetable(tt);
tt
в течение времен строки. Чтобы задать времена строки самостоятельно, используйте пару "имя-значение" 'RowTimes'
, чтобы задать или высокий datetime или высокий вектор длительности времен строки.TT = table2timetable(tt,'RowTimes',rowTimes)
Преобразуйте существующий длинный массив с помощью array2timetable
.
Вручную создайте длинное расписание из переменных в длинной таблице с помощью конструктора timetable
.
ds = datastore('data/folder/path.csv'); tt = tall(ds); TT = timetable(rowTimes, tt.Var1, tt.Var2, ...)
Преобразуйте расписание в оперативной памяти в длинное расписание с помощью синтаксиса TT = tall(tt)
.
Индексация. Временной диапазон
и функции withtol
поддержаны для индексации в длинные расписания. Функция vartype
не поддерживается.
Поддерживаемые Функции. Эти функции поддерживают длинные расписания.
Для получения дополнительной информации см. Раздел "Высокие массивы".
Указания и ограничения по применению:
Только эти синтаксисы поддержаны:
TT = timetable(rowTimes,var1,...,varN)
TT = timetable(var1,...,varN,'RowTimes',rowTimes)
TT = timetable(___,'VariableNames',{'name1',...,'nameN'})
Все переменные данных должны быть распределены.
Для получения дополнительной информации смотрите функции MATLAB Выполнения с Распределенными Массивами (Parallel Computing Toolbox).
addprop
| array2timetable
| isvarname
| rmprop
| сводные данные
| таблица
| table2timetable
| timetable2table
| uitable
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.