Можно комбинировать расписания и синхронизировать их данные различными способами. Можно конкатенировать расписания вертикально или горизонтально, но только тогда, когда они содержат одно и то же время строки или переменные расписания. Используйте 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
Конкатенируйте расписания. Можно конкатенировать расписания вертикально, когда они имеют одинаковые переменные. Значение времени строки помечает строки и не содержится в переменной timetable. Обратите внимание, что время строк расписания может оказаться вне порядка и не нужно регулярно разделять. Для примера, 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 timetable
. Расписание имеет то же время строки, что и 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