Этот пример показывает, как создать расписание, расписания объединения, и настроить данные от нескольких расписаний до общего временного вектора. Общий временной вектор может содержать времена или от или от оба расписания, или это может быть совершенно новый временной вектор, который вы задаете. Пример показывает, как вычислить и отобразить среднесуточное значение для погодных измерений, содержавшихся в различных расписаниях.
Расписание является типом таблицы, которая сопоставляет время с каждой строкой. Расписание может сохранить переменные данных в столбцах, которые имеют различные типы данных и размеры, пока каждая переменная имеет одинаковое число строк. Кроме того, расписания обеспечивают специфичные для времени функции, чтобы объединить, преобразовать в нижний индекс в и настроить их данные.
Загрузите данные о качестве воздуха и погодные измерения в два различных расписания. Даты измерений располагаются с 15 ноября 2015 до 19 ноября 2015. Данные о качестве воздуха прибывают из датчика в создании, в то время как погодные измерения прибывают из датчиков снаружи.
Считайте данные о качестве воздуха из таблицы с функцией readtable
. Затем преобразуйте его от таблицы до расписания с функцией table2timetable
. Функция readtable
возвращает таблицу только, не расписание.
indoors = readtable('indoors.csv');
indoors = table2timetable(indoors);
Также можно создать расписание из массива M на n с функцией array2timetable
, или от переменных рабочей области с функцией timetable
.
Отобразите первые пять строк indoors
. Каждая строка расписания имеет время, которое маркирует ту строку данных.
indoors(1:5,:)
ans=5×3 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×4 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×6 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×6 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');
retime
| rmmissing
| synchronize
| table2timetable
| timerange
| timetable