Documentation Center

  • Trial Software
  • Product Updates

struct2table

Convert structure array to table

Syntax

Description

example

T = struct2table(S) converts the structure array, S, to a table, T. Each field of S becomes a variable in T.

example

T = struct2table(S,Name,Value) creates a table from a structure array, S, with additional options specified by one or more Name,Value pair arguments.

For example, you can specify row names to include in the table.

Examples

expand all

Convert Scalar Structure to Table

Convert a scalar structure to a table using the default options.

Create a structure array, S.

S.Name = {'CLARK';'BROWN';'MARTIN'};
S.Gender = {'M';'F';'M'};
S.SystolicBP = [124;122;130];
S.DiastolicBP = [93;80;92];

S
S = 

           Name: {3x1 cell}
         Gender: {3x1 cell}
     SystolicBP: [3x1 double]
    DiastolicBP: [3x1 double]

The scalar structure, S, has four fields, each with three rows.

Convert the structure array to a table.

T = struct2table(S)
T = 

      Name      Gender    SystolicBP    DiastolicBP
    ________    ______    __________    ___________

    'CLARK'     'M'       124           93         
    'BROWN'     'F'       122           80         
    'MARTIN'    'M'       130           92         

The structure field names in S become the variable names in the output table. The size of T is 3-by-4.

Change Name from a variable to row names by modifying the table property, T.Properties.RowNames, and then deleting the variable Name.

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

T
T = 

              Gender    SystolicBP    DiastolicBP
              ______    __________    ___________

    CLARK     'M'       124           93         
    BROWN     'F'       122           80         
    MARTIN    'M'       130           92         

Convert Nonscalar Structure Array to Table

Create a nonscalar structure array, 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 = 

3x1 struct array with fields:

    Name
    Gender
    SystolicBP
    DiastolicBP

S is a 3-by-1 structure array with four fields.

Convert the structure array to a table.

T = struct2table(S)
T = 

      Name      Gender    SystolicBP    DiastolicBP
    ________    ______    __________    ___________

    'CLARK'     'M'       124           93         
    'BROWN'     'F'       122           80         
    'MARTIN'    'M'       130           92         

The structure field names in S become the variable names in the output table. The size of T is 3-by-4.

Treat Scalar Stucture As Array

Use 'AsArray',true to create a table from a scalar structure whose fields have different numbers of rows.

Create a scalar structure, S, with fields name, billing, and test.

S.name = 'John Doe';
S.billing = 127.00;
S.test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205];
S
S = 

       name: 'John Doe'
    billing: 127
       test: [3x3 double]

The fields have a different number of rows. Therefore, you cannot use struct2table(S), which uses 'AsArray',false by default.

Treat the scalar structure as an array and convert it to a table.

T = struct2table(S,'AsArray',true)
T = 

       name       billing        test    
    __________    _______    ____________

    'John Doe'    127        [3x3 double]

T contains one row.

Input Arguments

expand all

S — Structure arraystructure array

Structure array, specified as a scalar structure array.

  • If S is a scalar structure with n fields, all of which have m rows, then T is an m-by-n table.

  • If S is a nonscalar m-by-1 structure array with n fields, then T is an m-by-n table.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: RowNames',{'row1','row2','row3'} uses the row names, row1, row2, and row3 for the table, T.

'RowNames' — Row names for T{} (default) | cell array of nonempty, distinct strings

Row names for T, specified as the comma-separated pair consisting of 'RowNames' and a cell array of nonempty, distinct strings.

'AsArray' — Indicator for how to treat scalar structurefalse (default) | true | 0 | 1

Indicator for how to treat scalar structure, specified as the comma-separated pair consisting of 'AsArray' and either false, true, 0, or 1.

true

struct2table converts S to a table with one row and n variables. The variables can be different sizes.

false

struct2table converts a scalar structure array with n fields into an m-by-n table. Each field must have m rows. This is the default behavior

Output Arguments

expand all

T — Output tabletable

Output table, returned as a table. The table can store metadata such as descriptions, variable units, variable names, and row names. For more information, see Table Properties.

See Also

| | |

Was this topic helpful?