表是在变量中存储面向列数据的容器。表变量可以有不同的数据类型和大小,只要所有变量具有相同的行数。表变量有名称,就像结构的字段有名称一样。表的行可以有名称,但行名称不是必需的。要访问表数据,请使用行和变量的名称或数字索引为它们建立索引。
在表中建立索引的典型原因包括:
重新排序或删除行和变量。
将数组作为新行或变量添加。
将数据阵列解压缩以用作函数的输入参数。
根据您使用的索引类型,您可以访问从表中提取的subtable或数组。索引:
平滑括号,(),返回已选择行和变量的表。
点符号将变量的内容作为数组返回。
花括号{},返回从所选行和变量的内容连接的数组。
您可以按名称,数字索引或数据类型指定行和变量。从R2019B开始,变量名称和行名可以包含任何字符,包括空格和非ASCII字符。此外,他们可以从任何角色开始,而不仅仅是字母。变量和行名不必有效的MATLAB®标识符(由isvarname
功能)。
类型的输出 |
句法 |
行 |
变量 |
例子 |
---|---|---|---|---|
表,包含指定的行和变量 |
|
指定为:
|
指定为:
|
|
表,包含具有指定数据类型的变量 |
|
指定为:
|
指定为数据类型,例如 |
|
数组,从一个变量中提取数据 |
|
未指定 |
指定为:
|
|
数组,从一个变量和指定的行中提取数据 |
|
指定为数组的数字或逻辑索引 |
指定为:
|
|
数组,连接指定行和变量的数据 |
|
指定为:
|
指定为:
|
|
数组,使用指定的数据类型连接指定行和变量的数据 |
|
指定为:
|
指定为数据类型,例如 |
|
数组,连接来自所有行和变量的数据 |
|
未指定 |
未指定 |
|
加载100名患者的样品数据耐心
mat文件到工作区变量。
加载耐心谁是
名称大小字节类属性年龄100x1 800双舒张期100x1 800双性别100x1 11412细胞高度100x1 800双LastName 100x1 11616细胞位置100x1 14208细胞SelfAssessedHealthStatus 100x1 11540细胞吸烟者100x1 100逻辑收缩期100x1 800双体重100x1 800双
创建一个表,并用年龄
那性别
那高度
那重量
,吸烟者
工作空间变量。中使用唯一标识符姓
作为行的名字。T.
是一个100×5表。(当您指定行名称时,它们不计为表变量)。
T =表(年龄、性别、身高、体重、吸烟,...“RowNames”,姓)
T =100×5表年龄性别身高体重吸烟者___ __________ ______ ______ ______史密斯38{'男性'}71 176真约翰逊43{'男性'}69 163假威廉姆斯40{'女性'}64 131假琼斯40{'女性'}67 133假布朗49{'女性'}64 119假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 ⋮
使用数字索引的索引
创建一个子表,包含前5行和来自的所有变量T.
.要指定所需的行和变量,请在括号中使用数字索引。这种类型的索引类似于索引到数字阵列。
t1 = t(1:5,:)
T1 =5×5表年龄性别身高体重吸烟者___ __________ ______ ______ ______史密斯38{'男性'}71 176真约翰逊43{'男性'}69 163假威廉姆斯40{'女性'}64 131假琼斯40{'女性'}67 133假布朗49{'女性'}64 119假
T1
是一张5乘5的桌子。
除了数字索引外,还可以在括号中使用行名或变量名。(在本例中,使用行索引和冒号比使用行或变量名更紧凑。)
索引使用的名字
为姓氏选择所有数据”威廉姆斯
和“棕色”
.自从T.
行名是病人的姓,索引到T.
使用行名称。
T2 = T ({”威廉姆斯那“棕色”},:)
T2 =2×5表年龄性别身高体重吸烟者___ __________ ______ ______ ______威廉姆斯38{'女'}64 131假布朗49{'女'}64 119假
T2
是一张2乘5的桌子。
您还可以根据名称选择变量。创建一个只有的前五行的表T.
和高度
和重量
变量。显示它。
T3 = T (1:5, {'高度'那“重量”})
T3 =5×2表身高体重______ ______史密斯71 176约翰逊69 163威廉姆斯64 131琼斯67 133布朗64 119
表变量名称不必是有效的MATLAB标识符。它们可以包含空格和非ASCII字符,可以以任何字符开头。
添加一个带有空格和破折号的变量名T.
.然后指数为T.
使用变量名称。
T = addvars (T, SelfAssessedHealthStatus'newvariablenames'那“自我评价健康状况”);T (1:5, {“年龄”那“抽烟”那“自我评价健康状况”})
ans =5×3表年龄吸烟者自我评估健康状况_________ ___________________________史密斯38真{'Excellent'}约翰逊43假{'Fair'}威廉姆斯38假{'Good'}琼斯40假{'Fair'}布朗49假{'Good'}
指定数据类型下标
您可以使用名称或数字指定变量,而是可以创建与具有相同数据类型的所有变量匹配的数据类型下标。
首先,创建一个数据类型下标以匹配数字表变量。
s = vartype(“数字”的)
s =表vartype下标:选择匹配“数字”的表变量,请参阅表中的访问数据。
创建一个只有数字变量的表,只有前五行,来自T.
.
t4 = t(1:5,s)
T4 =5×3表年龄身高体重___ ______ ______史密斯38 71 176约翰逊43 69 163威廉姆斯38 64 131琼斯40 67 133布朗49 64 119
创建一个表耐心
MAT-file。然后使用点符号从表变量中提取数据。您还可以使用由满足条件的表变量中的值生成的逻辑索引进行索引。
加载耐心T =表(年龄、性别、身高、体重、吸烟,...“RowNames”,姓);
从变量中提取数据
要从一个变量中提取数据,请使用点表示法。从变量中提取数值重量
.然后绘制这些值的直方图。
直方图(T.Weight)标题('患者体重'的)
T.weight.
是具有100行的双精度列向量。
选择具有逻辑索引的行
您可以使用逻辑索引数组索引到数组或表格中。通常,您使用逻辑表达式,该表达式确定表变量中的哪个值符合条件。表达式的结果是一系列逻辑指数。
例如,创建匹配年龄小于40
.
rows = T.Age < 40
行=100x1逻辑阵列1 0 1 0 0 1 1 1⋮
为年龄小于40
,索引到高度
变量使用行
.有56名患者比较年轻40
.
T.Height(行)
ANS =.56×171 64 64 68 66 71 72 65 69 69⋮
您可以使用逻辑索引索引到表中。显示行T.
年龄小于40
.
t(行,:)
ans =56×5表年龄性别高度减肥____ __________ ______ ______ ______史密斯38 {'男性'} 71 176真正的威廉姆斯38 {女性'} 64 131错误米勒33 {女性'} 64 142真正的摩尔28 {'男性'} 68 183错误泰勒31 {女性'} 66 132错误杰克逊25 {'male'} 71 174假白色39 {'male'} 72 202真正的哈里斯36 {女性'} 65 129 false thompson 32 {'male'} 69 191 trueGarcia 27 {'女性'} 69 131 True Martinez 37 {“Male”} 70 179 False Rodriguez 39 {女性'} 64 117错误的Walker 28 {'女性'} 65 123 True Hall 25 {“男性'} 70 189 189 FalseAllen 39 {'女性'} 63 143假杨25 {'女性'} 63 114 false⋮
您可以使用一个逻辑表达式匹配多个条件。显示比较年轻的吸烟患者的行40
.
Rows =(t.smoker == true&t.age <40);t(行,:)
ans =18×5表年龄性别身高体重吸烟者 ___ __________ ______ ______ ______ 史密斯38{‘男性’}71 176真正的米勒33{‘女性’}64 142真正的白色39{‘男性’}72 202真正的汤普森32{‘男性’}69 191 69年真正的加西亚27日{‘女性’}131真正的沃克28{‘女性’}65 123 67{‘男性’}186年真正国王真正的纳尔逊33{‘男性’}66 180真正的米切尔39 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.
指定一个名为'日期'
.
通过一个表达式,其中表达式被圆括号括在圆点后面。例如,T。('开始日期')
指定一个名为'开始日期'
.
当表变量名碰巧也是一个有效的MATLAB®标识符时,使用第一个语法。(有效的标识符以字母开头,只能包含字母、数字和下划线。)
指定时使用第二个语法:
表示变量在表中的位置的数字。
不是有效的MATLAB标识符的变量名。
一个函数,其输出是表中变量的名称,或者添加到表中的变量。函数的输出必须是字符向量或字符串标量。
例如,创建一个表耐心
MAT-file。然后使用点表示法访问表变量的内容。
加载耐心T =表(年龄、性别、身高、体重、吸烟,...“RowNames”,姓);
要按表中的位置指定变量,请使用数字。年龄
是第一个变量T.
,那就用这个号码吧1
指定其位置。
t (1)
ANS =.100×138 43 38 40 49 46 33 40 28 31⋮
若要按名称指定变量,可以将其括在引号中。自从“年龄”
是有效的标识符,您可以使用其中之一指定它T.AGE.
或T。('年龄')
.
T.(“年龄”的)
ANS =.100×138 43 38 40 49 46 33 40 28 31⋮
您可以指定表变量名称,这些名称不是有效的MATLAB标识符。变量名称可以包含空格和非ASCII字符,并且可以以任何字符开头。但是,当您使用DOT表示法使用此类名称访问表变量时,必须使用括号指定它。
添加一个带有空格和连字符的变量名T.
.
T = addvars (T, SelfAssessedHealthStatus'newvariablenames'那“自我评价健康状况”);: T (1:5)
ans =5×6表年龄性别身高体重烟民自我评价健康状况 ___ __________ ______ ______ ______ ___________________________ 史密斯38{‘男性’}71 176真正的{‘优秀’}约翰逊43{‘男性’}69 163假{‘公平’}{‘女性’}威廉姆斯64 131假{‘好’}{‘女性’}琼斯67 133假{‘公平’}布朗49{‘女性’}64 119假{‘好’}
使用点表示法访问新的表变量。显示前五个元素。
C = t (“自我评价健康状况”);C(1:5)
ANS =.5 x1细胞{‘优秀’}{‘公平’}{‘好’}{‘公平’}{‘好’}
您还可以使用函数的输出作为变量名。删除t(自我评价健康状况)
变量。然后用包含今天日期的变量替换它。
T.(“自我评价健康状况”)= [];T.(字符串(DateTime('今天'))+自我报告的) = SelfAssessedHealthStatus;: T (1:5)
ans =5×6表年龄性别高度重量吸烟01-sep-2021自我报告___ ____________________________________________________________史密斯38 {'male'} 71 176 TRUE {'HEATHER'} JOHNSON 43 {“男性'} 69 163 FALSE {'公平'}威廉姆斯38{'女'} 64 131 false {'好'}琼斯40 {'女'} 67 133 false {'pair'} brown 49 {女性'} 64 119 false {'好'}
用Crly括号索引从表中提取数据并在数组中导致结果,不子表。但除了这个区别之外,您还可以使用数字、名称和数据类型下标指定行和变量,就像使用圆括号进行索引时一样。要从表中提取值,请使用花括号。如果您从多个表变量中提取值,那么这些变量必须具有允许将它们连接在一起的数据类型。
指定行和变量
从数字和逻辑阵列创建一个表耐心
文件。
加载耐心T =表(年龄,身高,体重,吸烟者,...“RowNames”,姓);
从多个变量中提取数据T.
.与点表示法不同,用花括号索引可以从多个表变量中提取值,并将它们连接到一个数组中。
提取前五名患者的高度和重量。使用数字索引选择前五行,以及可变名称来选择变量高度
和重量
.
T = {1:5, {'高度'那“重量”}}
A =5×271 176 69 163 64 131 67 133 64 119
一种
是一个5乘2的数字数组,而不是一个表。
如果指定一个变量名称,那么Curly Brace索引结果在相同的数组中可以使用点表示法。但是,当您使用Curly Brace索引时,必须指定行和变量。例如,这个语法T.Height.
和T{:,“高度”}
返回相同的数组。
从所有行和变量中提取数据
如果所有表变量都有允许它们一起连接的数据类型,那么您可以使用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 31 66 132 0⋮