If a block can emit nonscalar signals, the dimensions of the signals that the block outputs depend on the block parameters, if the block is a source block; otherwise, the output dimensions depend on the dimensions of the block input and parameters.

A *source* block is a block that has no inputs.
Examples of source blocks include the Constant block
and the Sine Wave block. See Sources for
a complete listing of Simulink^{®} source blocks. The output dimensions
of a source block are the same as those of its output value parameters
if the block's **Interpret vector parameters as
1-D** parameter is off (that is, not selected in the block
parameter dialog box). If the **Interpret vector
parameters as 1-D** parameter is on, the output dimensions
equal the output value parameter dimensions unless the parameter dimensions
are N-by-1 or 1-by-N. In the latter case, the block outputs a vector
signal of width N.

As an example of how a source block's output value parameter(s)
and **Interpret vector parameters as 1-D** parameter
determine the dimensionality of its output, consider the Constant
block. This block outputs a constant signal equal to its **Constant value** parameter. The following table
illustrates how the dimensionality of the **Constant
value** parameter and the setting of the **Interpret
vector parameters as 1-D** parameter determine the dimensionality
of the block's output.

Constant Value | Interpret vector parameters as 1-D | Output |
---|---|---|

scalar | off | one-element array |

scalar | on | one-element array |

1-by-N matrix | off | 1-by-N matrix |

1-by-N matrix | on | N-element vector |

N-by-1 matrix | off | N-by-1 matrix |

N-by-1 matrix | on | N-element vector |

M-by-N matrix | off | M-by-N matrix |

M-by-N matrix | on | M-by-N matrix |

Simulink source blocks allow you either to specify the dimensions of the signals that they output or specify values from which Simulink infers the dimensions. You can therefore use the source blocks to introduce signals of various dimensions into your model.

If a block has inputs, the dimensions of its outputs are, after scalar expansion, the same as those of its inputs. (All inputs must have the same dimensions, as discussed in Signal and Parameter Dimension Rules).

When creating a Simulink model, you must observe the following rules regarding signal and parameter dimensions.

All nonscalar inputs to a block must have the same dimensions.

A block can have a mix of scalar and nonscalar inputs as long as all the nonscalar inputs have the same dimensions. Simulink expands the scalar inputs to have the same dimensions as the nonscalar inputs (see Scalar Expansion of Inputs and Parameters).

In general, block parameters must have the same dimensions as the dimensions of the inputs to the block. Simulink performs some processing that provides flexibility relating to that general rule.

A block can have scalar parameters corresponding to nonscalar inputs. In this case, Simulink expands a scalar parameter to have the same dimensions as the corresponding input (see Scalar Expansion of Inputs and Parameters).

If an input is a vector, the corresponding parameter can be either an N-by-1 or a 1-by-N matrix. In this case, Simulink applies the N matrix elements to the corresponding elements of the input vector. This exception allows use of MATLAB

^{®}row or column vectors, which are actually 1-by-N or N-by-1 matrices, respectively, to specify parameters that apply to vector inputs.

Simulink converts vectors to row or column matrices and row or column matrices to vectors under the following circumstances:

If a vector signal is connected to an input that requires a matrix, Simulink converts the vector to a one-row or one-column matrix.

If a one-column or one-row matrix is connected to an input that requires a vector, Simulink converts the matrix to a vector.

If the inputs to a block consist of a mixture of vectors and matrices and the matrix inputs all have one column or one row, Simulink converts the vectors to matrices having one column or one row, respectively.

**Note**You can configure Simulink to display a warning or error message if a vector or matrix conversion occurs during a simulation. See Vector/matrix block input conversion for more information.

*Scalar
expansion* is the conversion of a scalar value into a nonscalar
array. Many Simulink blocks support scalar expansion of inputs
and parameters. Block-specific descriptions indicate whether Simulink applies
scalar expansion to a block's inputs and parameters.

Scalar expansion of inputs refers to the expansion of scalar inputs to match the dimensions of other nonscalar inputs or nonscalar parameters. When the input to a block is a mix of scalar and nonscalar signals, Simulink expands the scalar inputs into nonscalar signals having the same dimensions as the other nonscalar inputs. For example, a scalar of 4 is expanded to the vector [4 4 4] if the associated nonscalar has a dimension of 3.

Scalar expansion of parameters refers to the expansion of scalar block parameters to match the dimensions of nonscalar inputs.

Input(s) | Associated Block Parameter | Scalar Expansion |
---|---|---|

Scalar | Nonscalar | Input expanded to match parameter dimensions. |

Nonscalar | Scalar | Scalar parameter expanded to match number of elements of input. |

Combination of scalar and nonscalar | No corresponding parameter | Scalar inputs expanded to match dimensions of largest nonscalar input. See Scalar and Nonscalar Inputs and No Associated Parameter. |

In this example, the Constant block input to the Gain block
is scalar. The Gain block **Gain** parameter is a
nonscalar. Simulink expands the scalar input to match the dimensions
of a nonscalar **Gain** parameter, as reflected in
the simulation results in the Display block.

In this example, the Constant block input to the Gain block
is nonscalar. The Gain block **Gain** parameter is
a scalar. Simulink expands the scalar parameter to match the
dimensions of a nonscalar input from the Constant block, as reflected
in the simulation results in the Display block.

In this example, the Constant1 block input to the Sum block
is nonscalar, and the Constant2 block input is scalar. The Sum block
has no associated parameter. Simulink expands the scalar input
from Constant2 to match to the dimensions of the nonscalar Constant1
block input. The input is expanded to the vector `[3 3 3]`

.

Was this topic helpful?