Matlab中struct2table函数使用

目录

一.语法

二.说明

示例

将标量结构体转换为表

将非标量结构体数组转换为表

将标量结构体作为数组处理


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 转换为表 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 基于其字段具有不同行数的标量结构体创建一个表。创建一个具有字段 namebilling 和 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 包含一行。

猜你喜欢

转载自blog.csdn.net/jk_101/article/details/110938559