Data Format for Exported Simulation Data

Data Format for Block-Based Exported Data

You can use the Scope, To File, or To Workspace blocks to export simulation data. Each of these blocks has a data format parameter.

Data Format for Model-Based Exported Data

The data format for model-based exporting of simulation data specifies how Simulink® stores the exported data.

Simulink uses different data formats, depending on the kind of data that you export. For details, see:

Signal Logging Format

Use the Dataset format for signal logging data in new models. Select the format using the Configuration Parameters > Data Import/Export > Signal logging format parameter.

For details, see Specify the Signal Logging Data Format.

For backwards compatibility, Simulink supports the ModelDataLogs format for signal logging. The ModelDataLogs format will be removed in a future release. For details, see Migrate from ModelDataLogs to Dataset Format.

Logged Data Store Format

When you log data store data, Simulink uses a Simulink.SimulationData.Dataset object.

For details, see Accessing Data Store Logging Data.

State and Output Data Format

For exported state, final state, and output data, use one of the following formats:

If you select the Configuration Parameters > Data Import/Export > Output check box, Simulink logs fixed-point data as double. To log fixed-point data, consider using one of these approaches:

  • Signal logging — For details, see Export Signal Data Using Signal Logging.

    1. In the Simulink Editor, select one or more signals.

    2. Click the Record button arrow and click Log/Unlog Selected Signals.

  • To File block

  • To Workspace block — In the To Workspace block parameters dialog box, enable the Log fixed-point data as a fi object parameter.

Array

If you select this Array option, Simulink saves the states and outputs of a model in a state and output array, respectively.

The state matrix has the name specified in the Save to workspace area (for example, xout). Each row of the state matrix corresponds to a time sample of the states of a model. Each column corresponds to an element of a state. For example, suppose that your model has two continuous states, each of which is a two-element vector. Then the first two elements of each row of the state matrix contains a time sample of the first state vector. The last two elements of each row contain a time sample of the second state vector.

The model output matrix has the name specified in the Save to workspace area (for example, yout). Each column corresponds to a model output port, and each row to the outputs at a specific time.

    Note:   Use array format to save your model outputs and states only if the logged data is:

    • Either all scalars or all vectors (or all matrices for states)

    • Either all real or all complex

    • All of the same data type

    If your model outputs and states do not meet these conditions, use the Structure or Structure with time output formats (see Structure with Time).

Structure with Time

If you select this format, Simulink saves the model states and outputs in structures that have their names specified in the Save to workspace area. By default, the structures are xout for states and yout for output.

The structure used to save outputs has two top-level fields:

  • time

    Contains a vector of the simulation times.

  • signals

    Contains an array of substructures, each of which corresponds to a model output port.

Each substructure has four fields:

  • values

    Contains the outputs for the corresponding output port.

    • If the outputs are scalars or vectors, the values field is a matrix each of whose rows represents an output at the time specified by the corresponding element of the time vector.

    • If the outputs are matrix (2-D) values, the values field is a 3-D array of dimensions M-by-N-by-T where M-by-N is the dimensions of the output signal and T is the number of output samples.

    • If T = 1, MATLAB® drops the last dimension. Therefore, the values field is an M-by-N matrix.

  • dimensions

    Specifies the dimensions of the output signal.

  • label

    Specifies the label of the signal connected to the output port, S-Function block, or the type of state (continuous or discrete).

  • blockName

    Specifies the name of the corresponding output port or block with states.

  • inReferencedModel

    Contains a value of 1 if the signals field records the final state of a block that resides in the reference model. Otherwise, the value is false (0).

The following example shows the structure-with-time format for a nonreferenced model.

xout.signals(1)
 
ans = 

               values: [296206x1 double]
           dimensions: 1
                label: 'CSTATE'
            blockName: 'vdp/x1'
    inReferencedModel: 0

The structure used to save states has a similar organization. The states structure has two top-level fields:

  • time

    The time field contains a vector of the simulation times.

  • signals

    The field contains an array of substructures, each of which corresponds to one of the states of the model.

Each signals structure has four fields: values, dimensions, label, and blockName. The values field contains time samples of a state of the block specified by the blockName field. The label field for built-in blocks indicates the type of state: either CSTATE (continuous state) or DSTATE (discrete state). For S-Function blocks, the label contains whatever name is assigned to the state by the S-Function block.

The time samples of a state are stored in the values field as a matrix of values. Each row corresponds to a time sample. Each element of a row corresponds to an element of the state. If the state is a matrix, the matrix is stored in the values array in column-major order. For example, suppose that the model includes a 2-by-2 matrix state and that 51 samples of the state are logged during a simulation run.

The values field for this state would contain a 51-by-4 matrix. Each row corresponds to a time sample of the state, and the first two elements of each row correspond to the first column of the sample. The last two elements correspond to the second column of the sample.

Structure

This format is the same as for Structure with time output format, except that Simulink does not store simulation times in the time field of the saved structure.

Per-Port Structure

This format consists of a separate structure-with-time or structure-without-time for each output port. Each output data structure has only one signals field. To specify this option, enter the names of the structures in the Output text field as a comma-separated list, out1, out2,..., outN, where out1 is the data for your model's first port, out2 for the second input port, and so on.

Was this topic helpful?