Создание объекта Timetable

Этот пример показывает, как создать расписание, расписания объединения, и настроить данные от нескольких расписаний до общего временного вектора. Общий временной вектор может содержать времена или от или от оба расписания, или это может быть совершенно новый временной вектор, который вы задаете. Пример показывает, как вычислить и отобразить среднесуточное значение для погодных измерений, содержавшихся в различных расписаниях.

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

Импорт расписаний из файлов

Загрузите данные качества воздуха и погодные измерения в два различных расписания. Даты измерений располагаются с 15 ноября 2015 до 19 ноября 2015. Данные качества воздуха прибывают из датчика в создании, в то время как погодные измерения прибывают из датчиков снаружи.

Считайте данные качества воздуха из таблицы с функцией readtable. Затем преобразуйте его от таблицы до расписания с функцией table2timetable. Функция readtable возвращает таблицу только, не расписание.

indoors = readtable('indoors.csv');
indoors = table2timetable(indoors);

Также можно создать расписание из массива M на n с функцией array2timetable, или от переменных рабочей области с функцией timetable.

Отобразите первые пять строк indoors. Каждая строка расписания имеет время, которое маркирует ту строку данных.

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.

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   

Синхронизация Timetables

Расписания, indoors и outdoors, содержат различные измерения, проведенные внутри и снаружи создания в разное время. Объедините все данные в одно расписание с функцией 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   

Выходное расписание, tt содержит все времена из обоих расписаний. synchronize помещает недостающий индикатор данных, где нет никаких значений данных, чтобы поместить в tt. Когда оба входных расписания имеют переменную с тем же именем, таким как Humidity, synchronize переименовывает обе переменные и добавляет обоих к выходному расписанию.

Синхронизируйте расписания снова, и на этот раз заполните пропавших без вести значений данных с линейной интерполяцией.

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   

Корректировка данных в одном расписании

Также можно настроить данные в единственном расписании к новому временному вектору. Вычислите средние значения переменных в ttLinear на шестичасовых интервалах с функцией retime. Если любые строки имеют значения NaN после того, как вы настроите данные, удалите их с функцией rmmissing.

tv = [datetime(2015,11,15):hours(6):datetime(2015,11,18)];
ttHourly = retime(ttLinear,tv,'mean');
ttHourly = rmmissing(ttHourly);

Отображение данных расписания на графике

Нормализуйте данные в ttHourly к среднему значению для каждой переменной в расписании. Постройте график средних дневных значений этих измерений. Можно использовать свойство Variables расписания получить доступ к переменным. ttHourly.Variables возвращает те же переменные как ttHourly{:,:}.

ttMeanVars = ttHourly.Variables./mean(ttHourly.Variables);
plot(ttHourly.Time,ttMeanVars);
legend(ttHourly.Properties.VariableNames,'Interpreter','none');
xlabel('Time');
ylabel('Normalized Weather Measurements');
title('Mean Daily Weather Trends');

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

| | | | |

Похожие темы

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