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
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
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,
in1 is the data for your model's first port,
the second input port, and so on.
The rest of the section about importing structure data focuses on specifying one structure for all ports.
signals substructure must contain two
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
If the inputs for a port are scalar or vector values, the
must be an
M-by-N array. If you specify a time
M must be the number of time points specified
time field and
N is the
length of each vector value.
If the inputs for a port are matrices (2-D arrays), the
must be an
M-by-N-by-T array where
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
of the workspace structure must equal
[4 5] and
values array must have the dimensions
dimensions field specifies the dimensions
of the input. If each input is a scalar or vector (1-D array) value,
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
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);
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
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
In the Inport block dialog box, in the Signal
Attributes tab, set Port dimensions to
2 and Data
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,
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.
Note that in this model you do not need to specify the dimension
and data type, because the default values are