Таблица является контейнером, который хранит данные в столбцах в переменных. Табличные переменные могут иметь различные типы данных и размеры, пока все переменные имеют одинаковое число строк. Табличные переменные имеют имена, как поля структуры имеют имена. Строки таблицы могут иметь имена, но имена строки не требуются. К табличным данным о доступе индексируйте в строки и переменные с помощью или их имен или числовых индексов.
Типичные причины индексации в таблицы включают:
Переупорядочение или удаление строк и переменных.
Добавление массивов как новые строки или переменные.
Извлечение массивов данных, чтобы использовать в качестве входных параметров к функциям.
В зависимости от типа индексации вы используете, можно получить доступ или к подтаблице или к массиву, извлеченному из таблицы. Индексация с:
Сглаженные круглые скобки, (), возвращают таблицу, которая выбрала строки и переменные.
Запись через точку возвращает содержимое переменной как массив.
Фигурные скобки, {}, возвращают массив, конкатенированный в содержимое выбранных строк и переменных.
Можно задать строки и переменные по наименованию, числовой индекс или тип данных. Начиная в R2019b, имена переменных и имена строки могут включать любые символы, включая символы non-ASCII и пробелы. Кроме того, они могут запустить с любых символов, не только обозначает буквами. Переменная и имена строки не должны быть допустимыми идентификаторами MATLAB® (как определено isvarname
функция.
Тип Выхода | Синтаксис | 'Строки' | Переменные | Примеры |
---|---|---|---|---|
Таблица, содержа заданные строки и переменные |
| Заданный как:
| Заданный как:
|
|
Таблица, содержа переменные, которые задали тип данных |
| Заданный как:
| Заданный как тип данных, такой как |
|
Массив, извлекая данные из одной переменной |
| Не заданный | Заданный как:
|
|
Массив, извлекая данные из переменных и заданных строк |
| Заданный как числовые или логические индексы массива | Заданный как:
|
|
Массив, конкатенируя данные из заданных строк и переменных |
| Заданный как:
| Заданный как:
|
|
Массив, конкатенируя данные из заданных строк и переменных с заданным типом данных |
| Заданный как:
| Заданный как тип данных, такой как |
|
Массив, конкатенируя данные из всех строк и переменных |
| Не заданный | Не заданный |
|
Загрузите выборочные данные для 100 пациентов от patients
MAT-файл к переменным рабочей области.
load patients
whos
Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 12212 cell Height 100x1 800 double LastName 100x1 12416 cell Location 100x1 15008 cell SelfAssessedHealthStatus 100x1 12340 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double
Составьте таблицу и заполните ее с Age
, Gender
высота
, 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. Они могут включать пробелы и символы non-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
Matfile. Затем используйте запись через точку, чтобы извлечь данные из табличных переменных. Можно также индексировать использующие логические индексы, сгенерированные от значений в табличной переменной, которые удовлетворяют условию.
load patients T = table(Age,Gender,Height,Weight,Smoker,... 'RowNames',LastName);
Извлеките данные из переменной
Чтобы извлечь данные из одной переменной, используйте запись через точку. Извлеките числовые значения из переменной Weight
. Затем постройте гистограмму тех значений.
histogram(T.Weight)
title('Patient Weight')
T.Weight
вектор-столбец с двойной точностью с 100 строками.
Выберите Rows with Logical Indexing
Можно индексировать в массив или таблицу с помощью массива логических индексов. Как правило, вы используете логическое выражение, которое определяет, какие значения в табличной переменной удовлетворяют условию. Результатом выражения является массив логических индексов.
Например, создайте логические индексы, совпадающие с пациентами, возраст которых меньше 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
Matfile. Затем используйте запись через точку, чтобы получить доступ к содержимому табличных переменных.
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. Имена переменных могут включать пробелы и символы non-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 array
{'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 20-Dec-2019 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