Таблицы подходят для данных в столбцах, таких как табличные данные из текстовых файлов или электронных таблиц. Таблицы хранят столбцы данных в переменных. Переменные в таблице могут иметь различные типы данных, хотя все переменные должны иметь одинаковое число строк. Однако табличные переменные не ограничиваются хранением только вектор-столбцов. Например, табличная переменная может содержать матрицу с несколькими столбцами, пока она имеет одинаковое число строк как другие табличные переменные.
В MATLAB® можно составить таблицы и присвоить данные им несколькими способами.
Составьте таблицу от входных массивов при помощи table
функция.
Добавьте переменные в существующую таблицу при помощи записи через точку.
Присвойте переменные пустой таблице.
Предварительно выделите таблицу и заполните ее данные позже.
Преобразуйте переменные в таблицы при помощи array2table
cell2table
, или struct2table
функции.
Считайте таблицу из файла при помощи readtable
функция.
Импортируйте таблицу с помощью Import Tool.
Путем вы выбираете, зависит от природы ваших данных и как вы планируете использовать таблицы в своем коде.
Можно составить таблицу от массивов при помощи table
функция. Например, составьте маленькую таблицу с данными для пяти пациентов.
Во-первых, создайте шесть ориентированных на столбец массивов данных. Эти массивы имеют пять строк, потому что существует пять пациентов. (Большинство этих массивов является вектор-столбцами 5 на 1, в то время как BloodPressure
5 2 матрица.)
LastName = ["Sanchez";"Johnson";"Zhang";"Diaz";"Brown"]; Age = [38;43;38;40;49]; Smoker = [true;false;true;false;true]; Height = [71;69;64;67;64]; Weight = [176;163;131;133;119]; BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
Теперь составьте таблицу, patients
, как контейнер для данных. В этом вызове table
функция, входные параметры используют имена переменных рабочей области для имен переменных в patients
.
patients = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
patients=5×6 table
LastName Age Smoker Height Weight BloodPressure
_________ ___ ______ ______ ______ _____________
"Sanchez" 38 true 71 176 124 93
"Johnson" 43 false 69 163 109 77
"Zhang" 38 true 64 131 125 83
"Diaz" 40 false 67 133 117 75
"Brown" 49 true 64 119 122 80
Таблица 5 6 таблица, потому что это имеет шесть переменных. Как BloodPressure
переменная показывает, сама табличная переменная может иметь несколько столбцов. Этот пример показывает, почему таблицы имеют строки и переменные, не строки и столбцы.
Если вы составили таблицу, можно добавить новую переменную в любое время при помощи записи через точку. Запись через точку относится к табличным переменным по наименованию, T.varname
, где T
таблица и varname
имя переменной. Это обозначение похоже на обозначение, которое вы используете, чтобы получить доступ и присвоить данные полям структуры.
Например, добавьте BMI
переменная к patients
. Вычислите индекс массы тела или BMI, с помощью значений в patients.Weight
и patients.Height
. Присвойте значения BMI новой табличной переменной.
patients.BMI = (patients.Weight*0.453592)./(patients.Height*0.0254).^2
patients=5×7 table
LastName Age Smoker Height Weight BloodPressure BMI
_________ ___ ______ ______ ______ _____________ ______
"Sanchez" 38 true 71 176 124 93 24.547
"Johnson" 43 false 69 163 109 77 24.071
"Zhang" 38 true 64 131 125 83 22.486
"Diaz" 40 false 67 133 117 75 20.831
"Brown" 49 true 64 119 122 80 20.426
Другой способ составить таблицу состоит в том, чтобы запуститься с пустой таблицы и переменных присвоения к ней. Например, воссоздайте таблицу данных о пациентах, но на этот раз присвойте переменные с помощью записи через точку.
Во-первых, составьте пустую таблицу, patients2
, путем вызова table
без аргументов.
patients2 = table
patients2 = 0x0 empty table
Затем создайте копию данных о пациентах путем присвоения переменных. Имена табличной переменной не должны совпадать с именами массивов, как показано Name
и BP
табличные переменные.
patients2.Name = LastName; patients2.Age = Age; patients2.Smoker = Smoker; patients2.Height = Height; patients2.Weight = Weight; patients2.BP = BloodPressure
patients2=5×6 table
Name Age Smoker Height Weight BP
_________ ___ ______ ______ ______ __________
"Sanchez" 38 true 71 176 124 93
"Johnson" 43 false 69 163 109 77
"Zhang" 38 true 64 131 125 83
"Diaz" 40 false 67 133 117 75
"Brown" 49 true 64 119 122 80
Иногда вы знаете размеры и типы данных данных, которые вы хотите хранить в таблице, но вы планируете присвоить данные позже. Возможно, вы планируете добавить только несколько строк за один раз. В этом случае предварительно выделение места в таблице и затем присвоение значений к пустым строкам могут быть более эффективными.
Например, чтобы предварительно выделить место для таблицы, чтобы содержать время и температурные показания в различных станциях, используйте table
функция. Вместо того, чтобы предоставить входные массивы, задайте размеры и типы данных табличных переменных. Чтобы дать им имена, задайте 'VariableNames'
аргумент. Предварительное выделение заполняет табличные переменные значениями по умолчанию, которые подходят для их типов данных.
sz = [4 3]; varTypes = ["double","datetime","string"]; varNames = ["Temperature","Time","Station"]; temps = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)
temps=4×3 table
Temperature Time Station
___________ ____ _________
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
Один способ присвоить или добавить строку в таблицу состоит в том, чтобы присвоить массив ячеек строке. Если массив ячеек является вектором-строкой, и его элементы совпадают с типами данных своих соответствующих переменных, то присвоение преобразует массив ячеек в строку таблицы. Однако можно присвоить только одну строку во время с помощью массивов ячеек. Присвойте значения первым двум строкам.
temps(1,:) = {75,datetime('now'),"S1"}; temps(2,:) = {68,datetime('now')+1,"S2"}
temps=4×3 table
Temperature Time Station
___________ ____________________ _________
75 24-Aug-2021 23:47:20 "S1"
68 25-Aug-2021 23:47:20 "S2"
0 NaT <missing>
0 NaT <missing>
Как альтернатива, можно присвоить строки из меньшей таблицы в большую таблицу. С этим методом можно присвоить одну или несколько строк за один раз.
temps(3:4,:) = table([63;72],[datetime('now')+2;datetime('now')+3],["S3";"S4"])
temps=4×3 table
Temperature Time Station
___________ ____________________ _______
75 24-Aug-2021 23:47:20 "S1"
68 25-Aug-2021 23:47:20 "S2"
63 26-Aug-2021 23:47:20 "S3"
72 27-Aug-2021 23:47:20 "S4"
Можно использовать любой синтаксис, чтобы увеличить размер таблицы путем присвоения строк вне конца таблицы. При необходимости недостающие строки заполнены в значениями по умолчанию.
temps(6,:) = {62,datetime('now')+6,"S6"}
temps=6×3 table
Temperature Time Station
___________ ____________________ _________
75 24-Aug-2021 23:47:20 "S1"
68 25-Aug-2021 23:47:20 "S2"
63 26-Aug-2021 23:47:20 "S3"
72 27-Aug-2021 23:47:20 "S4"
0 NaT <missing>
62 30-Aug-2021 23:47:20 "S6"
Можно преобразовать переменные, которые имеют другие типы данных к таблицам. Массивы ячеек и структуры являются другими типами контейнеров, которые могут сохранить массивы, которые имеют различные типы данных. Таким образом, можно преобразовать массивы ячеек и структуры к таблицам. Можно также преобразовать массив в таблицу, где табличные переменные содержат столбцы значений от массива. Чтобы преобразовать эти виды переменных, используйте array2table
cell2table
, или struct2table
функции.
Например, преобразуйте массив в таблицу при помощи array2table
. Массивы не имеют имен столбцов, таким образом, таблица имеет имена переменных по умолчанию.
A = randi(3,3)
A = 3×3
3 3 1
3 2 2
1 1 3
a2t = array2table(A)
a2t=3×3 table
A1 A2 A3
__ __ __
3 3 1
3 2 2
1 1 3
Можно обеспечить собственные имена табличной переменной при помощи "VariableNames"
аргумент значения имени.
a2t = array2table(A,"VariableNames",["First","Second","Third"])
a2t=3×3 table
First Second Third
_____ ______ _____
3 3 1
3 2 2
1 1 3
Распространено иметь большое количество табличных данных в файле, таких как CSV (разделенное от запятой значение) файл или электронная таблица Excel®. Чтобы считать такие данные в таблицу, используйте readtable
функция.
Например, файл CSV outages.csv
файл примера, который распределяется с MATLAB. Файл содержит данные для набора отключений электричества электроэнергии. Первая линия outages.csv
имеет имена столбцов. Остальная часть файла разделила от запятой значения данных для каждого отключения электричества. Первые несколько линий показывают здесь.
Region,OutageTime,Loss,Customers,RestorationTime,Cause SouthWest,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,winter storm SouthEast,2003-01-23 00:49,530.1399497,212035.3001,,winter storm SouthEast,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,winter storm West,2004-04-06 05:44,434.8053524,340371.0338,2004-04-06 06:10,equipment fault MidWest,2002-03-16 06:18,186.4367788,212754.055,2002-03-18 23:23,severe storm ...
Считать outages.csv
и храните данные в таблице, можно использовать readtable
. Это читает числовые значения, даты и времена, и представляет в виде строки в табличные переменные, которые имеют соответствующие типы данных. Здесь, Loss
и Customers
числовые массивы. OutageTime
и RestorationTime
переменными является datetime
массивы, потому что readtable
распознает форматы даты и времени текста в тех столбцах входного файла. Чтобы считать остальную часть текстовых данных в строковые массивы, задайте "TextType"
аргумент значения имени.
outages = readtable("outages.csv","TextType","string")
outages=1468×6 table
Region OutageTime Loss Customers RestorationTime Cause
___________ ________________ ______ __________ ________________ _________________
"SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm"
"SouthEast" 2003-01-23 00:49 530.14 2.1204e+05 NaT "winter storm"
"SouthEast" 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 "winter storm"
"West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault"
"MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 "severe storm"
"West" 2003-06-18 02:49 0 0 2003-06-18 10:54 "attack"
"West" 2004-06-20 14:39 231.29 NaN 2004-06-20 19:16 "equipment fault"
"West" 2002-06-06 19:28 311.86 NaN 2002-06-07 00:51 "equipment fault"
"NorthEast" 2003-07-16 16:23 239.93 49434 2003-07-17 01:12 "fire"
"MidWest" 2004-09-27 11:09 286.72 66104 2004-09-27 16:37 "equipment fault"
"SouthEast" 2004-09-05 17:48 73.387 36073 2004-09-05 20:46 "equipment fault"
"West" 2004-05-21 21:45 159.99 NaN 2004-05-22 04:23 "equipment fault"
"SouthEast" 2002-09-01 18:22 95.917 36759 2002-09-01 19:12 "severe storm"
"SouthEast" 2003-09-27 07:32 NaN 3.5517e+05 2003-10-04 07:02 "severe storm"
"West" 2003-11-12 06:12 254.09 9.2429e+05 2003-11-17 02:04 "winter storm"
"NorthEast" 2004-09-18 05:54 0 0 NaT "equipment fault"
⋮
Наконец, можно в интерактивном режиме предварительно просмотреть и импортировать данные из электронных таблиц или разделенных текстовых файлов при помощи Import Tool. Существует два способа открыть Import Tool.
Панель инструментов MATLAB: На вкладке Home, в разделе Variable, нажимают Import Data.
Командная строка MATLAB: Введите uiimport(
filename
)
, где filename
имя текста или файла электронной таблицы.
Например, откройте outages.csv
файл примера при помощи uiimport
и which
получить путь к файлу.
uiimport(which("outages.csv"))
Import Tool показывает вам предварительный просмотр этих шести столбцов от outages.csv
. Чтобы импортировать данные как таблицу, выполните эти шаги.
В разделе Imported Data выберите Table как выходной тип.
Нажмите Import Selection (около верхнего правого угла). Новая таблица, названная outages
, появляется в вашей рабочей области.
readtable
| table
| array2table
| cell2table
| struct2table
| Инструмент для импорта