Можно объединить расписания и синхронизировать их данные во множестве путей. Можно конкатенировать расписания вертикально или горизонтально, но только когда они содержат те же времена строки или переменные расписания. Используйте функцию 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
повторная синхронизация
| синхронизация
| table2timetable
| расписание