Объедините Timetables и синхронизируйте их данные

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

Синхронизация Timetables и индикация отсутствующих данных

Загрузите данные о качестве воздуха и измерения погоды из двух различных расписаний и синхронизируйте их. Сроки проведения измерений варьируются с 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  

См. также

| | |

Похожие темы