## Documentation Center |

On this page… |
---|

The Simulink^{®} software can read data from the workspace
in the form of a structure, whose name you specify in the **Configuration Parameters** > ** Data
Import/Export** > ** Input** parameter.

For information about defining MATLAB^{®} structures, see Create a Structure Array in
the MATLAB documentation.

The structure always includes a signals substructure, which contains a values field and a dimensions field. For details about the signal data, see Specify Signal Data. Depending on the modeling task that you want to perform, the structure can also include a time field.

You can specify structures for the model as a whole or on a
per-port basis. For information about specifying per-port structures
for the **Input** parameter, see One Structure for All Ports or a Structure for Each Port.

The form of a structure that you use depends on whether you are importing data for discrete signals (the signal is defined at evenly-spaced values of time) or continuous signals (the signal is defined for all values of time). For discrete signals, use a structure that has an empty time vector. For continuous signals, the approach that you use depends on whether the data represents a smooth curve or a curve that has discontinuities (jumps) over its range. For details, see:

For both discrete and continuous signals, specify a `signals` field,
which contains an array of substructures, each of which corresponds
to a model input port. For details, see Specify Signal Data.

For continuous signals, you may want to specify a `time` field,
which contains a time vector. See Time and Signal Values for Imported Data.

You can specify one structure to provide input to all root-level input ports in a model, or you can specify a separated structure for each port.

The per-port structure format consists of a separate structure-with-time
or structure-without-time for each port. Each port's input data structure
has only one `signals` field. To specify this option,
enter the names of the structures in the **Input** text
field as a comma-separated list, `in1, in2,..., inN`,
where `in1` is the data for your model's first port, `in2` for
the second input port, and so on.

The rest of the section about importing structure data focuses on specifying one structure for all ports.

Each `signals` substructure must contain two
fields: `values` and `dimensions`.

The `values` field must contain an array of
inputs for the corresponding input port. If you specify a time vector,
each input must correspond to a time value specified in the `time` field.

If the inputs for a port are scalar or vector values, the `values` field
must be an `M-by-N` array. If you specify a time
vector, `M` must be the number of time points specified
by the `time` field and `N` is the
length of each vector value.

If the inputs for a port are matrices (2-D arrays), the `values` field
must be an `M-by-N-by-T `array where `M` and `N` are
the dimensions of each matrix input and `T` is the
number of time points. For example, suppose that you want to input
51 time samples of a 4-by-5 matrix signal into one of your model's
input ports. Then, the corresponding `dimensions` field
of the workspace structure must equal `[4 5]` and
the `values` array must have the dimensions `4-by-5-by-51`.

The `dimensions` field specifies the dimensions
of the input. If each input is a scalar or vector (1-D array) value,
the `dimensions` field must be a scalar value that
specifies the length of the vector (1 for a scalar). If each input
is a matrix (2-D array), the `dimensions` field must
be a two-element vector whose first element specifies the number of
rows in the matrix and whose second element specifies the number of
columns.

You can specify a time vector as part of the data structure to import. The Time and Signal Values for Imported Data section indicates when you may want to add a time vector.

The following table provides recommendations for how to specify time values, based on the kind of signal data you want to import.

Signal Data | Time Data Recommendation |
---|---|

Inport or Trigger block with a discrete sample time | Do not specify a time vector. Simulink reads one signal value at each time step. |

Evenly-spaced discrete signals | Consider using an expression in the following form: TimeVector = Ts * (0:N); where |

Unevenly-spaced values | Use any valid MATLAB array expression; for example, If the root-level input port is from a From Workspace, From File, or Signal Builder block, which support zero-crossing detection, you can specify a zero-crossing time by using a duplicate time entry. |

In the first example, consider the following model that has a single input port:

Create an input structure for loading 11 time samples of a two-element signal vector of type

`int8`into the model:N = 10 Ts = 0.1 a.time = (0:N)*Ts'; c1 = int8([0:1:10]'); c2 = int8([0:10:100]'); a.signals(1).values = [c1 c2]; a.signals(1).dimensions = 2;

In the

**Configuration Parameters**>**Data Import/Export**>**Input**parameter edit box, specify the variable`a`.In the Inport block dialog box, in the

**Signal Attributes**tab, set**Port dimensions**to`2`and**Data type**to`int8`.

As another example, consider a model that has two inputs:

Suppose that you want to input a sine wave into the first port
and a cosine wave into the second port. To do this, define a structure, `a`,
as follows, in the MATLAB workspace:

a.time = (0:0.1:1)'; a.signals(1).values = sin(a.time); a.signals(1).dimensions = 1; a.signals(2).values = cos(a.time); a.signals(2).dimensions = 1;

Enter the structure name (`a`) in the **Configuration Parameters** > ** Data
Import/Export** > ** Input** parameter edit box.

Was this topic helpful?