Main Content

struct2table

将结构体数组转换为表

说明

示例

T = struct2table(S) 将结构体数组 S 转换为表 TS 的每个字段成为 T 中的一个变量。

示例

T = struct2table(S,Name,Value) 使用由一个或多个 Name,Value 对组参数指定的其他选项从结构体数组 S 创建表。

例如,可以指定要包括在表中的行名称。

示例

全部折叠

使用默认选项将标量结构体转换为表。

创建一个结构体数组 S

S.Name = ["Chang";"Brown";"Ruiz"];
S.Smoker = ["Y";"N";"Y"];
S.SystolicBP = [124;122;130];
S.DiastolicBP = [93;80;92];

标量结构体 S 具有四个字段,每个字段具有三行。

将结构体数组转换为表。

T = struct2table(S)
T=3×4 table
     Name      Smoker    SystolicBP    DiastolicBP
    _______    ______    __________    ___________

    "Chang"     "Y"         124            93     
    "Brown"     "N"         122            80     
    "Ruiz"      "Y"         130            92     

S 中的结构体字段名称成为输出表中的变量名称。T 的大小为 3×4。

将变量的 Name 更改为行名称,方法是修改表属性 T.Properties.RowNames,然后删除变量 Name

T.Properties.RowNames = T.Name;
T.Name = [];

T
T=3×3 table
             Smoker    SystolicBP    DiastolicBP
             ______    __________    ___________

    Chang     "Y"         124            93     
    Brown     "N"         122            80     
    Ruiz      "Y"         130            92     

创建一个非标量结构体数组 S

S(1,1).Name = "Chang";
S(1,1).Smoker = "Y";
S(1,1).SystolicBP = 124;
S(1,1).DiastolicBP = 93;

S(2,1).Name = "Brown";
S(2,1).Smoker = "N";
S(2,1).SystolicBP = 122;
S(2,1).DiastolicBP = 80;

S(3,1).Name = "Ruiz";
S(3,1).Smoker = "Y";
S(3,1).SystolicBP = 130;
S(3,1).DiastolicBP = 92;

S
S=3×1 struct array with fields:
    Name
    Smoker
    SystolicBP
    DiastolicBP

S 是具有四个字段的 3×1 结构体数组。

将结构体数组转换为表。

T = struct2table(S)
T=3×4 table
     Name      Smoker    SystolicBP    DiastolicBP
    _______    ______    __________    ___________

    "Chang"     "Y"         124            93     
    "Brown"     "N"         122            80     
    "Ruiz"      "Y"         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 = 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 表。

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: "RowNames",["row1","row2","row3"] 将行名称 row1row2row3 用于表 T

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

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

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

自 R2021a 开始提供

维度名称,指定为二元素字符向量元胞数组或二元素字符串数组,其元素为非空且不同。

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

在 R2021a 之前,只能通过设置输出的 DimensionNames 属性来指定维度名称。

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

true

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

false

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

输出参数

全部折叠

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

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2013b 中推出