Таблица - это контейнер, в котором хранятся данные, ориентированные на столбцы, в переменных. Переменные таблицы могут иметь различные типы данных и размеры, если все переменные имеют одинаковое количество строк. Переменные таблицы имеют имена, так же как поля структуры имеют имена. Строки таблицы могут иметь имена, но имена строк не требуются. Чтобы получить доступ к данным таблицы, выполните индексирование строк и переменных с использованием их имен или числовых индексов.
Типичные причины индексации в таблицы:
Переупорядочивание или удаление строк и переменных.
Добавление массивов в качестве новых строк или переменных.
Извлечение массивов данных для использования в качестве входных аргументов функций.
В зависимости от используемого типа индексирования можно получить доступ к вложенной таблице или к массиву, извлеченному из таблицы. Индексирование с:
Сглаживание круглых скобок, (), возвращает таблицу с выбранными строками и переменными.
Точечная нотация возвращает содержимое переменной в виде массива.
Фигурные скобки {} возвращают массив, сцепленный с содержимым выбранных строк и переменных.
Строки и переменные можно указывать по имени, числовому индексу или типу данных. Начиная с R2019b имена переменных и строк могут содержать любые символы, включая пробелы и символы, не относящиеся к ASCII. Кроме того, они могут начинаться с любых символов, а не только букв. Имена переменных и строк не обязательно должны быть допустимыми идентификаторами MATLAB ® (согласно определению isvarname функция).
Тип вывода | Синтаксис | Ряды | Переменные | Примеры |
|---|---|---|---|---|
Таблица, содержащая указанные строки и переменные |
| Указывается как:
| Указывается как:
|
|
Таблица, содержащая переменные с указанным типом данных |
| Указывается как:
| Указывается как тип данных, например |
|
Массив, извлечение данных из одной переменной |
| Не указано | Указывается как:
|
|
Массив, извлечение данных из одной переменной и указанных строк |
| Указывается как числовые или логические индексы массива | Указывается как:
|
|
Массив, объединяющий данные из указанных строк и переменных |
| Указывается как:
| Указывается как:
|
|
Массив, объединяющий данные из указанных строк и переменных с указанным типом данных |
| Указывается как:
| Указывается как тип данных, например |
|
Массив, объединяющий данные из всех строк и переменных |
| Не указано | Не указано |
|
Загрузить данные выборки для 100 пациентов из patients MAT-файл для переменных рабочей области.
load patients
whosName Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double
Создайте таблицу и заполните ее Age, Gender, Height, Weight, и Smoker переменные рабочей области. Использовать уникальные идентификаторы в LastName в виде имен строк. T является таблицей «100 на 5». (При указании имен строк они не считаются табличной переменной).
T = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName)
T=100×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Smith 38 {'Male' } 71 176 true
Johnson 43 {'Male' } 69 163 false
Williams 38 {'Female'} 64 131 false
Jones 40 {'Female'} 67 133 false
Brown 49 {'Female'} 64 119 false
Davis 46 {'Female'} 68 142 false
Miller 33 {'Female'} 64 142 true
Wilson 40 {'Male' } 68 180 false
Moore 28 {'Male' } 68 183 false
Taylor 31 {'Female'} 66 132 false
Anderson 45 {'Female'} 68 128 false
Thomas 42 {'Female'} 66 137 false
Jackson 25 {'Male' } 71 174 false
White 39 {'Male' } 72 202 true
Harris 36 {'Female'} 65 129 false
Martin 48 {'Male' } 71 181 true
⋮
Индекс с использованием числовых индексов
Создание вложенной таблицы, содержащей первые пять строк и все переменные из T. Чтобы указать нужные строки и переменные, используйте числовые индексы в скобках. Этот тип индексирования аналогичен индексированию в числовые массивы.
T1 = T(1:5,:)
T1=5×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Smith 38 {'Male' } 71 176 true
Johnson 43 {'Male' } 69 163 false
Williams 38 {'Female'} 64 131 false
Jones 40 {'Female'} 67 133 false
Brown 49 {'Female'} 64 119 false
T1 является таблицей 5 на 5.
Помимо числовых индексов в скобках можно использовать имена строк или переменных. (В этом случае использование индексов строк и двоеточия является более компактным, чем использование имен строк или переменных.)
Индекс с использованием имен
Выберите все данные для пациентов с фамилиями 'Williams' и 'Brown'. С тех пор T имеет имена строк, которые являются фамилиями пациентов, индексировать в T с использованием имен строк.
T2 = T({'Williams','Brown'},:)T2=2×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Williams 38 {'Female'} 64 131 false
Brown 49 {'Female'} 64 119 false
T2 является таблицей 2 на 5.
Можно также выбрать переменные по имени. Создание таблицы, содержащей только первые пять строк T и Height и Weight переменные. Отобразить его.
T3 = T(1:5,{'Height','Weight'})T3=5×2 table
Height Weight
______ ______
Smith 71 176
Johnson 69 163
Williams 64 131
Jones 67 133
Brown 64 119
Имена переменных таблицы не обязательно должны быть допустимыми идентификаторами MATLAB. Они могут содержать пробелы и символы, не относящиеся к ASCII, и могут начинаться с любого символа.
Добавление имени переменной с пробелами и тире в T. Затем проиндексировать в T с использованием имен переменных.
T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames','Self-Assessed Health Status'); T(1:5,{'Age','Smoker','Self-Assessed Health Status'})
ans=5×3 table
Age Smoker Self-Assessed Health Status
___ ______ ___________________________
Smith 38 true {'Excellent'}
Johnson 43 false {'Fair' }
Williams 38 false {'Good' }
Jones 40 false {'Fair' }
Brown 49 false {'Good' }
Указать подстрочный индекс типа данных
Вместо указания переменных с помощью имен или чисел можно создать подстрочный индекс типа данных, соответствующий всем переменным одного типа.
Сначала создайте подстрочный индекс типа данных для соответствия числовым переменным таблицы.
S = vartype('numeric')S = table vartype subscript: Select table variables matching the type 'numeric' See Access Data in a Table.
Создайте таблицу, содержащую только числовые переменные и только первые пять строк из T.
T4 = T(1:5,S)
T4=5×3 table
Age Height Weight
___ ______ ______
Smith 38 71 176
Johnson 43 69 163
Williams 38 64 131
Jones 40 67 133
Brown 49 64 119
Создание таблицы из patients MAT-файл. Затем используйте точечную нотацию для извлечения данных из табличных переменных. Индексировать можно также с помощью логических индексов, созданных на основе значений в табличной переменной, удовлетворяющих условию.
load patients T = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName);
Извлечь данные из переменной
Чтобы извлечь данные из одной переменной, используйте точечную нотацию. Извлечь числовые значения из переменной Weight. Затем постройте гистограмму этих значений.
histogram(T.Weight)
title('Patient Weight')
T.Weight является вектором столбца двойной точности со 100 строками.
Выбор строк с логическим индексированием
Можно индексировать в массив или таблицу с помощью массива логических индексов. Как правило, используется логическое выражение, определяющее, какие значения в переменной таблицы соответствуют условию. Результатом выражения является массив логических индексов.
Например, создайте логические индексы, соответствующие пациентам, возраст которых меньше 40.
rows = T.Age < 40
rows = 100x1 logical array
1
0
1
0
0
0
1
0
1
1
⋮
Извлечь высоты для пациентов, возраст которых меньше 40, индексировать в Height переменная с использованием rows. Есть 56 пациентов моложе, чем 40.
T.Height(rows)
ans = 56×1
71
64
64
68
66
71
72
65
69
69
⋮
Можно индексировать в таблицу с логическими индексами. Отображение строк T для пациентов, которые моложе 40.
T(rows,:)
ans=56×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Smith 38 {'Male' } 71 176 true
Williams 38 {'Female'} 64 131 false
Miller 33 {'Female'} 64 142 true
Moore 28 {'Male' } 68 183 false
Taylor 31 {'Female'} 66 132 false
Jackson 25 {'Male' } 71 174 false
White 39 {'Male' } 72 202 true
Harris 36 {'Female'} 65 129 false
Thompson 32 {'Male' } 69 191 true
Garcia 27 {'Female'} 69 131 true
Martinez 37 {'Male' } 70 179 false
Rodriguez 39 {'Female'} 64 117 false
Walker 28 {'Female'} 65 123 true
Hall 25 {'Male' } 70 189 false
Allen 39 {'Female'} 63 143 false
Young 25 {'Female'} 63 114 false
⋮
Можно сопоставить несколько условий с одним логическим выражением. Отображение строк для курящих пациентов моложе 40.
rows = (T.Smoker==true & T.Age<40); T(rows,:)
ans=18×5 table
Age Gender Height Weight Smoker
___ __________ ______ ______ ______
Smith 38 {'Male' } 71 176 true
Miller 33 {'Female'} 64 142 true
White 39 {'Male' } 72 202 true
Thompson 32 {'Male' } 69 191 true
Garcia 27 {'Female'} 69 131 true
Walker 28 {'Female'} 65 123 true
King 30 {'Male' } 67 186 true
Nelson 33 {'Male' } 66 180 true
Mitchell 39 {'Male' } 71 164 true
Turner 37 {'Male' } 70 194 true
Sanders 33 {'Female'} 67 115 true
Price 31 {'Male' } 72 178 true
Jenkins 28 {'Male' } 69 189 true
Long 39 {'Male' } 68 182 true
Patterson 37 {'Female'} 65 120 true
Flores 31 {'Female'} 66 141 true
⋮
При индексировании с использованием точечной нотации существует два способа задания переменной.
По имени, без кавычек. Например, T.Date задает переменную с именем 'Date'.
По выражению, где выражение заключено в круглые скобки после точки. Например, T.('Start Date') задает переменную с именем 'Start Date'.
Используйте первый синтаксис, если имя переменной таблицы также является допустимым идентификатором MATLAB ®. (Действительный идентификатор начинается с буквы и включает только буквы, цифры и подчеркивания.)
Используйте второй синтаксис при указании:
Число, указывающее положение переменной в таблице.
Имя переменной, которое не является допустимым идентификатором MATLAB.
Функция, выходные данные которой являются именем переменной в таблице или переменной, добавляемой в таблицу. Вывод функции должен быть символьным вектором или строковым скаляром.
Например, создайте таблицу из patients MAT-файл. Затем используйте точечную нотацию для доступа к содержимому переменных таблицы.
load patients T = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName);
Чтобы указать переменную по положению в таблице, используйте число. Age является первой переменной в T, поэтому используйте номер 1 для указания его положения.
T.(1)
ans = 100×1
38
43
38
40
49
46
33
40
28
31
⋮
Чтобы указать переменную по имени, ее можно заключить в кавычки. С тех пор 'Age' является допустимым идентификатором, его можно указать с помощью T.Age или T.('Age').
T.('Age')ans = 100×1
38
43
38
40
49
46
33
40
28
31
⋮
Можно указать имена табличных переменных, которые не являются допустимыми идентификаторами MATLAB. Имена переменных могут содержать пробелы и символы, отличные от ASCII, и начинаться с любого символа. Однако при использовании точечной нотации для доступа к табличной переменной с таким именем необходимо указать ее в скобках.
Добавление имени переменной с пробелами и дефис в T.
T = addvars(T,SelfAssessedHealthStatus,'NewVariableNames','Self-Assessed Health Status'); T(1:5,:)
ans=5×6 table
Age Gender Height Weight Smoker Self-Assessed Health Status
___ __________ ______ ______ ______ ___________________________
Smith 38 {'Male' } 71 176 true {'Excellent'}
Johnson 43 {'Male' } 69 163 false {'Fair' }
Williams 38 {'Female'} 64 131 false {'Good' }
Jones 40 {'Female'} 67 133 false {'Fair' }
Brown 49 {'Female'} 64 119 false {'Good' }
Доступ к новой табличной переменной с помощью точечной нотации. Отображение первых пяти элементов.
C = T.('Self-Assessed Health Status');
C(1:5)ans = 5x1 cell
{'Excellent'}
{'Fair' }
{'Good' }
{'Fair' }
{'Good' }
Можно также использовать вывод функции в качестве имени переменной. Удалить T.('Self-Assessed Health Status') переменная. Затем замените его переменной, имя которой включает текущую дату.
T.('Self-Assessed Health Status') = []; T.(string(datetime('today')) + ' Self Report') = SelfAssessedHealthStatus; T(1:5,:)
ans=5×6 table
Age Gender Height Weight Smoker 23-Mar-2021 Self Report
___ __________ ______ ______ ______ _______________________
Smith 38 {'Male' } 71 176 true {'Excellent'}
Johnson 43 {'Male' } 69 163 false {'Fair' }
Williams 38 {'Female'} 64 131 false {'Good' }
Jones 40 {'Female'} 67 133 false {'Fair' }
Brown 49 {'Female'} 64 119 false {'Good' }
Индексирование фигурными скобками извлекает данные из таблицы и приводит к массиву, а не к подтаблице. Кроме этого различия, можно указать строки и переменные, используя числа, имена и подстрочные индексы типа данных, точно так же, как при индексировании с помощью гладких скобок. Для извлечения значений из таблицы используйте фигурные скобки. При извлечении значений из нескольких табличных переменных эти переменные должны иметь типы данных, позволяющие объединять их вместе.
Указать строки и переменные
Создание таблицы из числовых и логических массивов из patients файл.
load patients T = table(Age,Height,Weight,Smoker,... 'RowNames',LastName);
Извлечение данных из нескольких переменных в T. В отличие от точечной нотации, индексирование с фигурными скобками может извлекать значения из нескольких переменных таблицы и объединять их в один массив.
Извлеките рост и вес для первых пяти пациентов. Используйте числовые индексы для выбора первых пяти строк, а имена переменных - для выбора переменных Height и Weight.
A = T{1:5,{'Height','Weight'}}A = 5×2
71 176
69 163
64 131
67 133
64 119
A является числовым массивом 5 на 2, а не таблицей.
Если указать одно имя переменной, то индексирование фигурной скобки приведет к тому же массиву, что и точечная нотация. Однако при использовании кёрточного индексирования фигурных скобок необходимо указывать как строки, так и переменные. Например, этот синтаксис T.Height и T{:,'Height'} возвращает тот же массив.
Извлечение данных из всех строк и переменных
Если все переменные таблицы имеют типы данных, которые позволяют объединять их вместе, можно использовать T.Variables , чтобы поместить все данные таблицы в массив. Этот синтаксис эквивалентен T{:,:} где двоеточия обозначают все строки и все переменные.
A2 = T.Variables
A2 = 100×4
38 71 176 1
43 69 163 0
38 64 131 0
40 67 133 0
49 64 119 0
46 68 142 0
33 64 142 1
40 68 180 0
28 68 183 0
31 66 132 0
⋮
addvars | histogram | table | vartype