Таблица является контейнером, который хранит ориентированные на столбцы данные в переменных. Табличные переменные могут иметь различные типы данных и размеры, пока все переменные имеют одинаковое число строк. Табличные переменные имеют имена, так же как поля структуры имеют имена. Строки таблицы могут иметь имена, но имена строк не требуются. Для доступа к данным таблицы индексируйте в строки и переменные с помощью их имен или числовых индексов.
Типичные причины индексации в таблицы включают:
Переупорядочивание или удаление строк и переменных.
Добавление массивов в виде новых строк или переменных.
Извлечение массивов данных для использования в качестве входных параметров в функциях.
В зависимости от типа индексации, которую вы используете, вы можете получить доступ к подтаблице или массиву, извлеченному из таблицы. Индексация с:
Сглаживать круглые скобки, (), возвращает таблицу, которая имеет выбранные строки и переменные.
Запись через точку возвращает содержимое переменной в виде массива.
Фигурные скобки {} возвращают массив, объединенный из содержимого выбранных строк и переменных.
Вы можете задать строки и переменные по имени, числовому индексу или типу данных. Начиная с R2019b, имена переменных и имена строк могут включать любые символы, включая пространства и символы, отличные от ASCII. Кроме того, они могут начинаться с любых символов, а не только букв. Переменная и имена строк не должны быть допустимыми MATLAB® идентификаторы (определяемые isvarname
функция).
Тип выхода | Синтаксис | Ряды | Переменные | Примеры |
---|---|---|---|---|
Таблица, содержащая указанные строки и переменные |
| Указывается как:
| Указывается как:
|
|
Таблица, содержащая переменные с заданным типом данных |
| Указывается как:
| Задается как тип данных, например |
|
Массив, извлечение данных из одной переменной |
| Не задан | Указывается как:
|
|
Массив, извлечение данных из одной переменной и заданных строк |
| Задается как числовой или логический индексы массива | Указывается как:
|
|
Массив, объединяющий данные из заданных строк и переменных |
| Указывается как:
| Указывается как:
|
|
Массив, объединяющий данные из заданных строк и переменных с заданным типом данных |
| Указывается как:
| Задается как тип данных, например |
|
Массив, объединяющий данные из всех строк и переменных |
| Не задан | Не задан |
|
Загрузка выборочных данных для 100 пациентов из patients
MAT-файл в переменные рабочей области.
load patients
whos
Name 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