exponenta event banner

Создание расписаний

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

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

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

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

Считывание данных о качестве воздуха из таблицы с readtimetable функция. Результатом является расписание.

indoors = readtimetable('indoors.csv');

Вы также можете создать расписание из массива M-by-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   

Синхронизировать расписания

Расписания, 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');

Figure contains an axes. The axes with title Mean Daily Weather Trends contains 5 objects of type line. These objects represent Humidity_indoors, AirQuality, Humidity_outdoors, TemperatureF, PressureHg.

См. также

| | | | |

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