Вы можете комбинировать расписания и синхронизировать их данные различными способами. Расписание можно объединять вертикально или горизонтально, но только в том случае, если оно содержит одни и те же значения времени строки или переменные расписания. Используйте synchronize функция для объединения расписаний с различными временами строк и переменными расписания. synchronize создает расписание, содержащее все переменные из всех входных расписаний. Затем он синхронизирует данные из расписаний ввода с временами строк расписания вывода. synchronize может заполнять недостающие элементы графика вывода отсутствующими индикаторами данных, с копиями значений из ближайших соседей или с интерполяцией значений. synchronize также можно агрегировать данные расписания по указанным ячейкам времени.
Загрузить расписания из openPricesSmall и соединить их вертикально. Расписание: opWeek1 и opWeek2. Они содержат цены открытия некоторых акций в течение первой и второй недель января 2016 года.
load openPricesSmallОтображение двух расписаний.
opWeek1
opWeek1=5×2 timetable
Time AAPL FB
____________________ ______ ______
08-Jan-2016 09:00:00 98.55 99.88
07-Jan-2016 09:00:00 98.68 100.5
06-Jan-2016 09:00:00 100.56 101.13
05-Jan-2016 09:00:00 105.75 102.89
04-Jan-2016 09:00:00 102.61 101.95
opWeek2
opWeek2=5×2 timetable
Time AAPL FB
____________________ ______ ______
14-Jan-2016 09:00:00 97.96 95.85
13-Jan-2016 09:00:00 100.32 100.58
12-Jan-2016 09:00:00 100.55 99
11-Jan-2016 09:00:00 98.97 97.91
08-Jan-2016 09:00:00 98.55 99.88
Объедините расписания. Расписания можно объединять вертикально, если они имеют одни и те же переменные. Время строки маркирует строки и не содержится в переменной расписания. Обратите внимание, что время в строках расписания может быть не в порядке и не должно регулярно располагаться. Например, op не включает дни, приходящиеся на выходные. Расписание также может содержать дублированное время. op содержит две строки для 08-Jan-2016 09:00:00.
op = [opWeek2;opWeek1]
op=10×2 timetable
Time AAPL FB
____________________ ______ ______
14-Jan-2016 09:00:00 97.96 95.85
13-Jan-2016 09:00:00 100.32 100.58
12-Jan-2016 09:00:00 100.55 99
11-Jan-2016 09:00:00 98.97 97.91
08-Jan-2016 09:00:00 98.55 99.88
08-Jan-2016 09:00:00 98.55 99.88
07-Jan-2016 09:00:00 98.68 100.5
06-Jan-2016 09:00:00 100.56 101.13
05-Jan-2016 09:00:00 105.75 102.89
04-Jan-2016 09:00:00 102.61 101.95
Вы также можете объединить расписания по горизонтали. Расписания должны иметь одинаковое время строки и различные переменные.
Отображение расписания opOtherStocks. Расписание имеет то же время строки, что и opWeek1, но переменные для разных акций.
opOtherStocks
opOtherStocks=5×2 timetable
Time MSFT TWTR
____________________ _____ _____
08-Jan-2016 09:00:00 52.37 20.51
07-Jan-2016 09:00:00 52.7 21
06-Jan-2016 09:00:00 54.32 21.62
05-Jan-2016 09:00:00 54.93 22.79
04-Jan-2016 09:00:00 54.32 22.64
Связать opWeek1 и opOtherStock. Расписание вывода имеет один набор времени строки и переменных из обоих расписаний.
op = [opWeek1 opOtherStocks]
op=5×4 timetable
Time AAPL FB MSFT TWTR
____________________ ______ ______ _____ _____
08-Jan-2016 09:00:00 98.55 99.88 52.37 20.51
07-Jan-2016 09:00:00 98.68 100.5 52.7 21
06-Jan-2016 09:00:00 100.56 101.13 54.32 21.62
05-Jan-2016 09:00:00 105.75 102.89 54.93 22.79
04-Jan-2016 09:00:00 102.61 101.95 54.32 22.64
Загрузка данных о качестве воздуха и измерений погоды из двух различных графиков и их синхронизация. Даты измерений варьируются с 15 ноября 2015 года, по 19 ноября 2015 года. Данные о качестве воздуха поступают от датчика внутри здания, а измерения погоды - от датчиков снаружи.
load indoors load outdoors
Отобразите первые пять строк каждого расписания. Они содержат измерения различных количеств, взятых в разное время.
indoors(1:5,:)
ans=5×2 timetable
Time Humidity AirQuality
___________________ ________ __________
2015-11-15 00:00:24 36 80
2015-11-15 01:13:35 36 80
2015-11-15 02:26:47 37 79
2015-11-15 03:39:59 37 82
2015-11-15 04:53:11 36 80
outdoors(1:5,:)
ans=5×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
2015-11-15 04:30:24 48.8 51.5 29.61
2015-11-15 06:00:24 48.7 51.5 29.6
Синхронизируйте расписания. График выпуска tt содержит все время из обоих расписаний. synchronize помещает отсутствующий индикатор данных, где нет значений данных для размещения в tt. Когда оба расписания ввода имеют переменную с одинаковым именем, например Humidity, synchronize переименовывает обе переменные и добавляет обе в расписание вывода.
tt = synchronize(indoors,outdoors); tt(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:24 36 80 49 51.3 29.61
2015-11-15 01:13:35 36 80 NaN NaN NaN
2015-11-15 01:30:24 NaN NaN 48.9 51.5 29.61
2015-11-15 02:26:47 37 79 NaN NaN NaN
2015-11-15 03:00:24 NaN NaN 48.9 51.5 29.61
Синхронизируйте расписания и заполните недостающие элементы расписания линейной интерполяцией. Для синхронизации на векторе времени, включающем все времена из обоих расписаний, укажите 'union' для времени вывода.
ttLinear = synchronize(indoors,outdoors,'union','linear'); ttLinear(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:24 36 80 49 51.3 29.61
2015-11-15 01:13:35 36 80 48.919 51.463 29.61
2015-11-15 01:30:24 36.23 79.77 48.9 51.5 29.61
2015-11-15 02:26:47 37 79 48.9 51.5 29.61
2015-11-15 03:00:24 37 80.378 48.9 51.5 29.61
Синхронизируйте расписания с часовым вектором времени. Входные расписания имели нерегулярное время строк. Расписание вывода имеет регулярное время строк с одним часом в качестве временного шага.
ttHourly = synchronize(indoors,outdoors,'hourly','linear'); ttHourly(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36 80 49 51.299 29.61
2015-11-15 01:00:00 36 80 48.934 51.432 29.61
2015-11-15 02:00:00 36.634 79.366 48.9 51.5 29.61
2015-11-15 03:00:00 37 80.361 48.9 51.5 29.61
2015-11-15 04:00:00 36.727 81.453 48.834 51.5 29.61
Синхронизируйте расписание с 30-минутным шагом времени. Укажите обычный шаг времени с помощью 'regular' входной аргумент и 'TimeStep' аргумент пары имя-значение.
ttHalfHour = synchronize(indoors,outdoors,'regular','linear','TimeStep',minutes(30)); ttHalfHour(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36 80 49 51.299 29.61
2015-11-15 00:30:00 36 80 48.967 51.366 29.61
2015-11-15 01:00:00 36 80 48.934 51.432 29.61
2015-11-15 01:30:00 36.224 79.776 48.9 51.499 29.61
2015-11-15 02:00:00 36.634 79.366 48.9 51.5 29.61
В качестве альтернативы можно синхронизировать расписания с вектором времени, который задает получасовые интервалы.
tv = [datetime(2015,11,15):minutes(30):datetime(2015,11,18)];
tv.Format = indoors.Time.Format;
ttHalfHour = synchronize(indoors,outdoors,tv,'linear');
ttHalfHour(1:5,:)ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36 80 49 51.299 29.61
2015-11-15 00:30:00 36 80 48.967 51.366 29.61
2015-11-15 01:00:00 36 80 48.934 51.432 29.61
2015-11-15 01:30:00 36.224 79.776 48.9 51.499 29.61
2015-11-15 02:00:00 36.634 79.366 48.9 51.5 29.61
Синхронизация расписаний и расчет дневных значений для всех переменных в расписании вывода.
ttDaily = synchronize(indoors,outdoors,'daily','mean'); ttDaily
ttDaily=4×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36.5 80.05 48.931 51.394 29.607
2015-11-16 00:00:00 36.85 80.35 47.924 51.571 29.611
2015-11-17 00:00:00 36.85 79.45 48.45 51.238 29.613
2015-11-18 00:00:00 NaN NaN 49.5 50.8 29.61
Синхронизируйте расписания с шестичасовыми временными интервалами и рассчитайте среднее значение для каждого интервала.
tt6Hours = synchronize(indoors,outdoors,'regular','mean','TimeStep',hours(6)); tt6Hours(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36.4 80.2 48.9 51.45 29.61
2015-11-15 06:00:00 36.4 79.8 48.9 51.45 29.6
2015-11-15 12:00:00 36.6 80.4 49.025 51.45 29.61
2015-11-15 18:00:00 36.6 79.8 48.9 51.225 29.607
2015-11-16 00:00:00 36.6 80.2 48.5 51.4 29.61
В качестве альтернативы укажите временной вектор с теми же шестичасовыми временными интервалами.
tv = [datetime(2015,11,15):hours(6):datetime(2015,11,18)];
tv.Format = indoors.Time.Format;
tt6Hours = synchronize(indoors,outdoors,tv,'mean');
tt6Hours(1:5,:)ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:00 36.4 80.2 48.9 51.45 29.61
2015-11-15 06:00:00 36.4 79.8 48.9 51.45 29.6
2015-11-15 12:00:00 36.6 80.4 49.025 51.45 29.61
2015-11-15 18:00:00 36.6 79.8 48.9 51.225 29.607
2015-11-16 00:00:00 36.6 80.2 48.5 51.4 29.61
retime | synchronize | table2timetable | timetable