Documentation

This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.

struct2dataset

Convert structure array to dataset array

The dataset data type might be removed in a future release. To work with heterogeneous data, use the MATLAB® table data type instead. See MATLAB table documentation for more information.

Syntax

  • ds = struct2dataset(S)
    example
  • ds = struct2dataset(S,Name,Value)
    example

Description

example

ds = struct2dataset(S) converts a structure array to a dataset array.

example

ds = struct2dataset(S,Name,Value) performs the conversion using additional options specified by one or more Name,Value pair arguments.

Examples

collapse all

Convert a scalar structure array to a dataset array using the default options.

Create a structure array to convert.

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 array has four fields, each with three rows.

Convert the structure array to a dataset array.

ds = struct2dataset(S)
ds = 

    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 dataset array. The size of ds is 3-by-4.

Convert a nonscalar structure array to a dataset array, using one of the structure fields for observation names.

Create a nonscalar structure array to convert.

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

This is a 3-by-1 structure array with 4 fields.

Convert the structure array to a dataset array, using the Name field for observation names.

ds = struct2dataset(S,'ReadObsNames','Name')
ds = 

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

The size of ds is 3-by-3 because the structure field Name is used for observation names, and not as a dataset array variable.

ds.Properties.DimNames
ans = 

    'Name'    'Variables'
ds.Properties.ObsNames
ans = 

    'CLARK'
    'BROWN'
    'MARTIN'

Related Examples

Input Arguments

collapse all

Input structure array to convert to a dataset array, specified as a scalar structure array with N fields, each with M rows, or a nonscalar M-by-1 structure array with N fields.

Data Types: struct

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: 'ReadObsNames','myField' specifies that the structure field, myField, contains observation names.

collapse all

Name of structure field containing observation names for the output dataset array, specified as the comma-separated pair consisting of 'ReadObsNames' and a character vector containing a field name from the input structure array, S. When you specify a field name, struct2dataset uses that field to create observation names, and sets ds.Properties.DimNames equal to {ReadObsNames,'Variables'}.

For example, to specify that observation names are in the structure field, Names, use

Example: 'ReadObsNames','Names'

By default, or if ReadObsNames is equal to false, struct2dataset does not create observation names unless you specify names using the name-value pair argument ObsNames.

Observation names for the output dataset array, specified as the comma-separated pair consisting of 'ObsNames' and a cell array of character vectors containing observation names. The names do not need to be valid MATLAB identifiers, but they must be unique.

Indicator for how to treat a scalar input structure array, specified as the comma-separated pair consisting of 'AsScalar' and either true or false. The default value is true if S is a scalar structure array, and false otherwise.

By default, struct2dataset converts a scalar structure array with N fields, each with M rows, into an M-by-N dataset array.

If instead you set AsScalar equal to false for a scalar input structure array, then struct2dataset converts S to a dataset array with N observations.

Output Arguments

collapse all

Output dataset array, returned by default with M observations and N variables.

  • If S is a scalar structure array with N fields, each with M rows, then ds is an M-by-N dataset array.

  • If S is a nonscalar M-by-1 structure array with N fields, then ds is an M-by-N dataset array.

  • If S is a scalar structure array with N fields, each with M rows, and AsScalar is set equal to false, then ds is a dataset array with N observations.

More About

Introduced in R2012b

Was this topic helpful?