Лучший способ представления данных электронной таблицы в MATLAB ® - это таблица, в которой может храниться сочетание числовых и текстовых данных, а также имен переменных и строк. Данные можно считывать в таблицы в интерактивном или программном режиме. Для интерактивного выбора данных щелкните Импорт данных (Import Data) на вкладке Главная (Home) в разделе Переменная (Variable). Для программного импорта данных используйте одну из следующих функций:
readtable - Чтение одного рабочего листа.
spreadsheetDatastore - Чтение нескольких листов или файлов.
В этом примере показано, как программно импортировать данные электронной таблицы с использованием обеих функций. Данные образца, airlinesmall_subset.xlsx, содержит по одному листу за каждый год в период с 1996 по 2008 год. Имена листов соответствуют году, например 2003.
Звонить readtable считывание всех данных в документе 2008, а затем отображение только первых 10 строк и столбцов. Укажите имя листа с помощью Sheet аргумент пары имя-значение. Если данные находятся на первом листе в файле, указывать их не требуется Sheet.
T = readtable('airlinesmall_subset.xlsx','Sheet','2008'); T(1:10,1:10)
ans=10×10 table
Year Month DayofMonth DayOfWeek DepTime CRSDepTime ArrTime CRSArrTime UniqueCarrier FlightNum
____ _____ __________ _________ _______ __________ _______ __________ _____________ _________
2008 1 3 4 1012 1010 1136 1135 {'WN'} 752
2008 1 4 5 1303 1300 1411 1415 {'WN'} 1161
2008 1 6 7 2134 2115 2242 2220 {'WN'} 1830
2008 1 7 1 1734 1655 54 30 {'WN'} 302
2008 1 8 2 1750 1755 2018 2035 {'WN'} 1305
2008 1 9 3 640 645 855 905 {'WN'} 896
2008 1 10 4 1943 1945 2039 2040 {'WN'} 120
2008 1 11 5 1303 1305 1401 1400 {'WN'} 1685
2008 1 13 7 1226 1230 1415 1400 {'WN'} 1118
2008 1 14 1 1337 1340 1623 1630 {'WN'} 730
Из листа с именем 1996, прочитайте только 10 строк данных из первых 5 столбцов, указав диапазон, 'A1:E11'. readtable функция возвращает таблицу 10 на 5.
T_selected = readtable('airlinesmall_subset.xlsx','Sheet','1996','Range','A1:E11')
T_selected=10×5 table
Year Month DayofMonth DayOfWeek DepTime
____ _____ __________ _________ _______
1996 1 18 4 2117
1996 1 12 5 1252
1996 1 16 2 1441
1996 1 1 1 2258
1996 1 4 4 1814
1996 1 31 3 1822
1996 1 18 4 729
1996 1 26 5 1704
1996 1 11 4 1858
1996 1 7 7 2100
В процессе импорта readtable автоматически определяет типы данных переменных. Однако если данные содержат нестандартные даты, длительности или повторяющиеся метки, их можно преобразовать в правильные типы данных. Преобразование переменных в правильные типы данных позволяет выполнять эффективные вычисления и сравнения, а также улучшает использование памяти. Например, представляют переменные Year, Month, и DayofMonth как один datetime переменная, UniqueCarrier как categorical, и ArrDelay как duration в минутах.
data = T(:,{'Year','Month','DayofMonth','UniqueCarrier','ArrDelay'});
data.Date = datetime(data.Year,data.Month,data.DayofMonth);
data.UniqueCarrier = categorical(data.UniqueCarrier);
data.ArrDelay = minutes(data.ArrDelay);Найдите день года с наибольшей задержкой, а затем отобразите дату.
ind = find(data.ArrDelay == max(data.ArrDelay)); data.Date(ind)
ans = datetime
07-Apr-2008
Хранилище данных полезно для обработки произвольно больших объемов данных, распределенных по нескольким листам или файлам электронных таблиц. Импорт и обработку данных можно выполнять через хранилище данных.
Создание хранилища данных из коллекции листов в airlinesmall_subset.xlsxвыберите переменные для импорта, а затем просмотрите данные.
ds = spreadsheetDatastore('airlinesmall_subset.xlsx'); ds.SelectedVariableNames = {'Year','Month','DayofMonth','UniqueCarrier','ArrDelay'}; preview(ds)
ans=8×5 table
Year Month DayofMonth UniqueCarrier ArrDelay
____ _____ __________ _____________ ________
1996 1 18 {'HP'} 6
1996 1 12 {'HP'} 11
1996 1 16 {'HP'} -13
1996 1 1 {'HP'} 1
1996 1 4 {'US'} -9
1996 1 31 {'US'} 9
1996 1 18 {'US'} -2
1996 1 26 {'NW'} -10
Перед импортом данных можно указать, какие типы данных следует использовать. Для этого примера выполните импорт UniqueCarrier как категориальная переменная.
ds.SelectedVariableTypes(4) = {'categorical'};Импорт данных с помощью readall или read функции. readall функция требует, чтобы все данные помещались в память, что верно для данных образца. После импорта вычислите максимальную задержку поступления для этого набора данных.
alldata = readall(ds); max(alldata.ArrDelay)/60
ans = 15.2333
Для больших наборов данных импортируйте части файла с помощью read функция. Дополнительные сведения см. в разделе Чтение коллекции или последовательности файлов электронных таблиц.
readtable | spreadsheetDatastore