exponenta event banner

Объединение расписаний и синхронизация их данных

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

См. также

| | |

Связанные темы