本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

struct2table

将结构体数组转换为表

说明

示例

T = struct2table(S) 将结构体数组 S 转换为表 TS 的每个字段成为 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 基于其字段具有不同行数的标量结构体创建一个表。

创建一个具有字段 namebillingtest 的标量结构体 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 包含一行。

输入参数

全部折叠

结构体数组,指定为一个标量结构体数组。

  • 如果 S 是具有 n 个字段的标量结构体,所有字段都有 m 行,则 Tm×n 表。

  • 如果 S 是非标量 m×1 结构体数组(具有 n 个字段),则 Tm×n 表。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: 'RowNames',{'row1','row2','row3'} 将行名称 row1row2row3 用于表 T

T 的行名称,指定为以逗号分隔的对组,其中包含 'RowNames' 和一个由非空的不同元素构成的字符向量元胞数组或字符串数组。

行名称可以包含任何 Unicode® 字符,包括空格和非 ASCII 字符。

如果您指定的行名称包含前导或尾部空白字符,则 struct2table 会将它们从行名称中删除。

如何处理标量结构体的指示符,指定为逗号分隔的对组,包含 'AsArray'falsetrue01

true

struct2tableS 转换为具有一行和 n 个变量的表。这些变量的大小可以不同。

false

struct2table 将具有 n 个字段的标量结构体数组转换为 m×n 表。每个字段必须具有 m 行。这是默认行为。

输出参数

全部折叠

输出表,以表形式返回。该表可以存储元数据,比如说明、变量单位、变量名称和行名称。有关详细信息,请参阅 table 的“属性”部分。

扩展功能

在 R2013b 中推出