Передискретизация и агрегированные данные в расписании

Этот пример показывает, как передискретизировать и агрегированные данные в расписании. Расписание является типом таблицы, которая сопоставляет время с каждой строкой. Расписание может сохранить переменные данных в столбцах, которые имеют различные типы данных и размеры, при условии, что каждая переменная имеет то же количество строк. С функцией retime можно передискретизировать данные расписания или совокупные данные расписания во временные интервалы, которые вы задаете.

Импорт расписания

Загрузите расписание, содержащее погодные измерения, проведенные с 15 ноября 2015 до 19 ноября 2015. Расписание содержит влажность, температуру и чтения давления, принятые этот период времени.

load outdoors
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   

Определите, обычно ли расписание. Обычное расписание - то, в котором различиями между всеми временами строки подряд является то же самое. outdoors не является обычным расписанием.

TF = isregular(outdoors)
TF = logical
   0

Найдите различия во временных шагах. Они отличаются между половиной минуты и полутора часами.

dt = unique(diff(outdoors.Time))
dt = 3x1 duration array
   00:00:24
   01:29:36
   01:30:00

Передискретизация расписания с интерполяцией

Настройте данные в расписании с функцией retime. Задайте почасовый временной вектор. Интерполируйте данные расписания к новым временам строки.

TT = retime(outdoors,'hourly','spline');
TT(1:5,:)
ans=5×3 timetable
           Time            Humidity    TemperatureF    PressureHg
    ___________________    ________    ____________    __________

    2015-11-15 00:00:00     49.001        51.298          29.61  
    2015-11-15 01:00:00     48.909        51.467          29.61  
    2015-11-15 02:00:00     48.902         51.51          29.61  
    2015-11-15 03:00:00       48.9          51.5          29.61  
    2015-11-15 04:00:00     48.844        51.498         29.611  

Передискретизация расписания с самыми близкими соседними значениями

Задайте почасовый временной вектор для TT. Для каждой строки в TT скопируйте значения с соответствующей строки в outdoors, время строки которого является ближайшим.

TT = retime(outdoors,'hourly','nearest');
TT(1:5,:)
ans=5×3 timetable
           Time            Humidity    TemperatureF    PressureHg
    ___________________    ________    ____________    __________

    2015-11-15 00:00:00        49          51.3          29.61   
    2015-11-15 01:00:00      48.9          51.5          29.61   
    2015-11-15 02:00:00      48.9          51.5          29.61   
    2015-11-15 03:00:00      48.9          51.5          29.61   
    2015-11-15 04:00:00      48.8          51.5          29.61   

Совокупные данные расписания и вычисляют среднесуточное значение

Функция retime предоставляет методы агрегации, такие как mean. Вычислите среднесуточные значения для данных в outdoors.

TT = retime(outdoors,'daily','mean');
TT
TT=4×3 timetable
           Time            Humidity    TemperatureF    PressureHg
    ___________________    ________    ____________    __________

    2015-11-15 00:00:00     48.931        51.394         29.607  
    2015-11-16 00:00:00     47.924        51.571         29.611  
    2015-11-17 00:00:00      48.45        51.238         29.613  
    2015-11-18 00:00:00       49.5          50.8          29.61  

Настройте данные расписания к постоянным временам

Вычислите средние значения по шестичасовым временным интервалам. Задайте шаг постоянного времени с помощью входного параметра 'regular' и аргумента в виде пар "имя-значение" 'TimeStep'.

TT = retime(outdoors,'regular','mean','TimeStep',hours(6));
TT(1:5,:)
ans=5×3 timetable
           Time            Humidity    TemperatureF    PressureHg
    ___________________    ________    ____________    __________

    2015-11-15 00:00:00       48.9         51.45          29.61  
    2015-11-15 06:00:00       48.9         51.45           29.6  
    2015-11-15 12:00:00     49.025         51.45          29.61  
    2015-11-15 18:00:00       48.9        51.225         29.607  
    2015-11-16 00:00:00       48.5          51.4          29.61  

Как альтернатива, можно задать временной вектор, который имеет те же шестичасовые временные интервалы. Задайте формат для временного вектора, чтобы отобразить обе даты и времени, когда вы отобразите расписание.

tv = datetime(2015,11,15):hours(6):datetime(2015,11,18);
tv.Format = 'dd-MMM-yyyy HH:mm:ss';
TT = retime(outdoors,tv,'mean');
TT(1:5,:)
ans=5×3 timetable
            Time            Humidity    TemperatureF    PressureHg
    ____________________    ________    ____________    __________

    15-Nov-2015 00:00:00       48.9         51.45          29.61  
    15-Nov-2015 06:00:00       48.9         51.45           29.6  
    15-Nov-2015 12:00:00     49.025         51.45          29.61  
    15-Nov-2015 18:00:00       48.9        51.225         29.607  
    16-Nov-2015 00:00:00       48.5          51.4          29.61  

Смотрите также

| | |

Похожие темы

Была ли эта тема полезной?