## Matrices, Vectors, and Scalars

Simulink^{®} supports matrix signals,
one-dimensional arrays, sample-based processing, and frame-based processing. This
section describes how Communications Toolbox™ processes certain kinds of matrices and signals.

This documentation uses the unqualified words *scalar* and
*vector* in ways that emphasize a signal's number of elements,
not its strict dimension properties:

A

*scalar*signal contains a single element. The signal could be a one-dimensional array with one element, or a matrix of size 1-by-1.A

*vector*signal contains one or more elements, arranged in a series. The signal could be a one-dimensional array, a matrix that has exactly one column, or a matrix that has exactly one row. The number of elements in a vector is called its*length*or, sometimes, its*width*.

In cases when it is important for a description or schematic to distinguish among
different types of scalar signals or different types of vector signals, this document
mentions the distinctions explicitly. For example, the terms *one-dimensional
array*, *column vector*, and *row
vector* distinguish among three types of vector signals.

The *size* of a matrix is the pair of numbers that indicate how
many rows and columns the matrix has. The *orientation* of a
two-dimensional vector is its status as either a row vector or column vector. A
one-dimensional array has no orientation – this is sometimes called an unoriented
vector.

A matrix signal that has more than one row and more than one column is called a
*full matrix* signal.

### Processing Rules

The following rules indicate how the blocks in the Communications Toolbox process scalar, vector, and matrix signals.

In their numerical computations, blocks that process scalars do not distinguish between one-dimensional scalars and one-by-one matrices. If the block produces a scalar output from a scalar input, the block preserves dimension.

For vector input signals:

The numerical computations do not distinguish between one-dimensional arrays and M-by-1 matrices.

Most blocks do not process row vectors and do not support multichannel functionality.

The block output preserves dimension and orientation.

The block treats elements of the input vector as a collection that arises naturally from the block's operation (for example, a collection of symbols that jointly represent a codeword) or as successive samples from a single time series.

Most blocks do not process matrix signals that have more than one row and more than one column. For blocks that do, a signal in the shape of an

*N*-by-*M*matrix represents a series of*N*successive samples from*M*channels. An**Input processing**parameter on the block determines whether each element or column of the input signal is a channel.Some blocks, such as the digital baseband modulation blocks, can produce multiple output values for each value of a scalar input signal. A

**Rate options**parameter on the block determines if the additional samples are output by increasing the rate of the output signal or by increasing the size of the output signal.Blocks that process continuous-time signals do not process frame-based inputs. Such blocks include the analog phase-locked loop blocks.

To learn which blocks processes scalar signals, vector signals, or matrices, refer to each block's individual Help page.