目录
struct2table函数是将结构体数组转换为表。
一.语法
T = struct2table(S)
T = struct2table(S,Name,Value)
结构体数组,指定为一个标量结构体数组。
-
如果
S
是具有n
个字段的标量结构体,所有字段都有m
行,则T
是m
×n
表。 -
如果
S
是非标量m
×1
结构体数组(具有n
个字段),则T
是m
×n
表。
|
|
|
|
输出表,以表形式返回。该表可以存储元数据,比如说明、变量单位、变量名称和行名称。可以参考table的“属性”部分。
二.说明
T = struct2table(S)
将结构体数组S
转换为表T
。S
的每个字段成为T
中的一个变量。
T = struct2table(S,Name,Value)
使用由一个或多个Name,Value
对组参数指定的其他选项从结构体数组S
创建表。
例如,可以指定要包括在表中的行名称。
示例
将标量结构体转换为表
使用默认选项将标量结构体转换为表。创建一个结构体数组 S
。
S.Name = {'CLARK';'BROWN';'MARTIN'};
S.Gender = {'M';'F';'M'};
S.SystolicBP = [124;122;130];
S.DiastolicBP = [93;80;92];
S
S = struct with fields:
Name: {3x1 cell}
Gender: {3x1 cell}
SystolicBP: [3x1 double]
DiastolicBP: [3x1 double]
标量结构体 S
具有四个字段,每个字段具有三行。将结构体数组转换为表。
T = struct2table(S)
T=3×4 table
Name Gender SystolicBP DiastolicBP
__________ ______ __________ ___________
{'CLARK' } {'M'} 124 93
{'BROWN' } {'F'} 122 80
{'MARTIN'} {'M'} 130 92
S中的结构体字段名称成为输出表中的变量名称。T
的大小为 3×4。将变量的 Name
更改为行名称,方法是修改表属性 T.Properties.RowNames
,然后删除变量 Name
。
T.Properties.RowNames = T.Name;
T.Name = [];
T
T=3×3 table
Gender SystolicBP DiastolicBP
______ __________ ___________
CLARK {'M'} 124 93
BROWN {'F'} 122 80
MARTIN {'M'} 130 92
将非标量结构体数组转换为表
创建一个非标量结构体数组 S
。
S(1,1).Name = 'CLARK';
S(1,1).Gender = 'M';
S(1,1).SystolicBP = 124;
S(1,1).DiastolicBP = 93;
S(2,1).Name = 'BROWN';
S(2,1).Gender = 'F';
S(2,1).SystolicBP = 122;
S(2,1).DiastolicBP = 80;
S(3,1).Name = 'MARTIN';
S(3,1).Gender = 'M';
S(3,1).SystolicBP = 130;
S(3,1).DiastolicBP = 92;
S
S=3×1 struct array with fields:
Name
Gender
SystolicBP
DiastolicBP
S是具有四个字段的 3×1 结构体数组。将结构体数组转换为表。
T = struct2table(S)
T=3×4 table
Name Gender SystolicBP DiastolicBP
__________ ______ __________ ___________
{'CLARK' } {'M'} 124 93
{'BROWN' } {'F'} 122 80
{'MARTIN'} {'M'} 130 92
S中的结构体字段名称成为输出表中的变量名称。T
的大小为 3×4。
将标量结构体作为数组处理
使用 'AsArray',true
基于其字段具有不同行数的标量结构体创建一个表。创建一个具有字段 name
、billing
和 test
的标量结构体 S
。
S.name = 'John Doe';
S.billing = 127.00;
S.test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205];
S
S = struct with fields:
name: 'John Doe'
billing: 127
test: [3x3 double]
这些字段具有不同的行数。因此,不能使用 struct2table(S)
,后者默认情况下使用 'AsArray',false
。将标量结构体作为数组处理并转换为表。
T = struct2table(S,'AsArray',true)
T=1×3 table
name billing test
____________ _______ ____________
{'John Doe'} 127 {3x3 double}
T 包含一行。