目录
struct2table函数是将结构体数组转换为表。
语法
T = struct2table(S)
T = struct2table(S,Name,Value)
结构体数组,指定为一个标量结构体数组。
-
如果 S 是具有 n 个字段的标量结构体,所有字段都有 m 行,则 T 是 m×n 表。
-
如果 S 是非标量 m×1 结构体数组(具有 n 个字段),则 T 是 m×n 表。
true | struct2table 将 S 转换为具有一行和 n 个变量的表。这些变量的大小可以不同。 |
false | struct2table 将具有 n 个字段的标量结构体数组转换为 m×n 表。每个字段必须具有 m 行。这是默认行为。 |
输出表,以表形式返回。该表可以存储元数据,比如说明、变量单位、变量名称和行名称。可以参考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 包含一行。