Этот пример показывает, как передискретизировать и агрегированные данные в расписании. Расписание является типом таблицы, которая сопоставляет время с каждой строкой. Расписание может сохранить переменные данных в столбцах, которые имеют различные типы данных и размеры, при условии, что каждая переменная имеет одинаковое число строк. С функцией retime
можно передискретизировать данные о расписании или совокупные данные о расписании во временные интервалы, которые вы задаете.
Загрузите расписание, содержащее погодные измерения, проведенные с 15 ноября 2015 до 19 ноября 2015. Расписание содержит влажность, температуру и показания давления, принятые этот период времени.
load outdoors
outdoors(1:5,:)
ans=5×4 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
2015-11-15 04:30:24 48.8 51.5 29.61
2015-11-15 06:00:24 48.7 51.5 29.6
Определите, обычно ли расписание. Обычное расписание - то, в котором различиями между всеми временами строки подряд является то же самое. outdoors
не является обычным расписанием.
TF = isregular(outdoors)
TF = logical
0
Найдите различия во временных шагах. Они отличаются между половиной минуты и полутора часами.
dt = unique(diff(outdoors.Time))
dt = 3x1 duration array
00:00:24
01:29:36
01:30:00
Настройте данные в расписании с функцией retime
. Задайте почасовый временной вектор. Интерполируйте данные о расписании к новым временам строки.
TT = retime(outdoors,'hourly','spline'); TT(1:5,:)
ans=5×4 timetable
Time Humidity TemperatureF PressureHg
___________________ ________ ____________ __________
2015-11-15 00:00:00 49.001 51.298 29.61
2015-11-15 01:00:00 48.909 51.467 29.61
2015-11-15 02:00:00 48.902 51.51 29.61
2015-11-15 03:00:00 48.9 51.5 29.61
2015-11-15 04:00:00 48.844 51.498 29.611
Задайте почасовый временной вектор для TT
. Для каждой строки в TT
скопируйте значения с соответствующей строки в outdoors
, время строки которого является ближайшим.
TT = retime(outdoors,'hourly','nearest'); TT(1:5,:)
ans=5×4 timetable
Time Humidity TemperatureF PressureHg
___________________ ________ ____________ __________
2015-11-15 00:00:00 49 51.3 29.61
2015-11-15 01:00:00 48.9 51.5 29.61
2015-11-15 02:00:00 48.9 51.5 29.61
2015-11-15 03:00:00 48.9 51.5 29.61
2015-11-15 04:00:00 48.8 51.5 29.61
Функция retime
предоставляет методы агрегации, такие как mean
. Вычислите среднесуточные значения для данных в outdoors
.
TT = retime(outdoors,'daily','mean'); TT
TT=4×4 timetable
Time Humidity TemperatureF PressureHg
___________________ ________ ____________ __________
2015-11-15 00:00:00 48.931 51.394 29.607
2015-11-16 00:00:00 47.924 51.571 29.611
2015-11-17 00:00:00 48.45 51.238 29.613
2015-11-18 00:00:00 49.5 50.8 29.61
Вычислите средние значения по шестичасовым временным интервалам. Задайте шаг постоянного времени с помощью входного параметра 'regular'
и аргумента пары "имя-значение" 'TimeStep'
.
TT = retime(outdoors,'regular','mean','TimeStep',hours(6)); TT(1:5,:)
ans=5×4 timetable
Time Humidity TemperatureF PressureHg
___________________ ________ ____________ __________
2015-11-15 00:00:00 48.9 51.45 29.61
2015-11-15 06:00:00 48.9 51.45 29.6
2015-11-15 12:00:00 49.025 51.45 29.61
2015-11-15 18:00:00 48.9 51.225 29.607
2015-11-16 00:00:00 48.5 51.4 29.61
Как альтернатива, можно задать временной вектор, который имеет те же шестичасовые временные интервалы. Задайте формат для временного вектора, чтобы отобразить обе даты и времени, когда вы отобразите расписание.
tv = datetime(2015,11,15):hours(6):datetime(2015,11,18); tv.Format = 'dd-MMM-yyyy HH:mm:ss'; TT = retime(outdoors,tv,'mean'); TT(1:5,:)
ans=5×4 timetable
Time Humidity TemperatureF PressureHg
____________________ ________ ____________ __________
15-Nov-2015 00:00:00 48.9 51.45 29.61
15-Nov-2015 06:00:00 48.9 51.45 29.6
15-Nov-2015 12:00:00 49.025 51.45 29.61
15-Nov-2015 18:00:00 48.9 51.225 29.607
16-Nov-2015 00:00:00 48.5 51.4 29.61
retime
| synchronize
| table2timetable
| timetable