Main Content

# Discrete State-Space

Implement discrete state-space system

• Library:
• Simulink / Discrete

## Description

### Block Behavior for Non-Empty Matrices

The Discrete State-Space block implements the system described by

`$\begin{array}{c}x\left(n+1\right)=Ax\left(n\right)+Bu\left(n\right)\\ y\left(n\right)=Cx\left(n\right)+Du\left(n\right),\end{array}$`

where u is the input, x is the state, and y is the output. The matrix coefficients must have these characteristics, as illustrated in the following diagram:

• A must be an n-by-n matrix, where n is the number of states.

• B must be an n-by-m matrix, where m is the number of inputs.

• C must be an r-by-n matrix, where r is the number of outputs.

• D must be an r-by-m matrix.

The block accepts one input and generates one output. The width of the input vector is the number of columns in the B and D matrices. The width of the output vector is the number of rows in the C and D matrices. To define the initial state vector, use the Initial conditions parameter.

To specify a vector or matrix of zeros for A, B, C, D, or Initial conditions, use the `zeros` function.

### Block Behavior for Empty Matrices

When the matrices A, B, and C are empty (for example, `[]`), the functionality of the block becomes `y(n) = Du(n)`. If the Initial conditions vector is also empty, the block uses an initial state vector of zeros.

## Ports

### Input

expand all

Input vector, where the width equals the number of columns in the B and D matrices. For more information, see Description.

Tip

For integer and fixed-point input signals, use the Fixed-Point State-Space block.

Data Types: `single` | `double`

### Output

expand all

Output vector, with width equal to the number of rows in the C and D matrices. For more information, see Description.

Data Types: `single` | `double`

## Parameters

expand all

### Main

Specify the matrix coefficient `A`, as a real-valued n-by-n matrix, where n is the number of states. For more information on the matrix coefficients, see Description.

#### Programmatic Use

 Block Parameter: `A` Type: character vector Values: scalar | vector | matrix Default: `'1'`

Specify the matrix coefficient `B`, as a real-valued n-by-m matrix, where n is the number of states, and m is the number of inputs. For more information on the matrix coefficients, see Description.

#### Programmatic Use

 Block Parameter: `B` Type: character vector Values: scalar | vector | matrix Default: `'1'`

Specify the matrix coefficient C, as a real-valued r-by-n matrix, where r is the number of outputs, and n is the number of states. For more information on the matrix coefficients, see Description.

#### Programmatic Use

 Block Parameter: `C` Type: character vector Values: scalar | vector | matrix Default: `'1'`

Specify the matrix coefficient D, as a real-valued r-by-m matrix, where r is the number of outputs, and m is the number of inputs. For more information on the matrix coefficients, see Description.

#### Programmatic Use

 Block Parameter: `D` Type: character vector Values: scalar | vector | matrix Default: `'1'`

Specify the initial state vector as a scalar or vector. The initial state vector cannot include `inf` or `NaN` values.

#### Programmatic Use

 Block Parameter: `InitialCondition` Type: character vector Values: scalar | vector Default: `'0'`

Specify the time interval between samples. See Specify Sample Time.

#### Programmatic Use

 Block Parameter: `SampleTime` Type: character vector Values: scalar | vector Default: `'-1'`

### State Attributes

Use this parameter to assign a unique name to the block state. The default is `' '`. When this field is blank, no name is assigned. When using this parameter, remember these considerations:

• A valid identifier starts with an alphabetic or underscore character, followed by alphanumeric or underscore characters.

• The state name applies only to the selected block.

This parameter enables State name must resolve to Simulink signal object when you click Apply.

For more information, see C Code Generation Configuration for Model Interface Elements (Simulink Coder).

#### Programmatic Use

 Block Parameter: `StateName` Type: character vector Values: unique name Default: `''`

Select this check box to require that the state name resolves to a Simulink® signal object.

#### Dependencies

To enable this parameter, specify a value for State name. This parameter appears only if you set the model configuration parameter Signal resolution to a value other than `None`.

#### Programmatic Use

 Block Parameter: `StateMustResolveToSignalObject` Type: character vector Values: `'off' | 'on'` Default: `'off'`

## Block Characteristics

 Data Types `double` | `single` Direct Feedthrough `yes` Multidimensional Signals `no` Variable-Size Signals `no` Zero-Crossing Detection `no`

## See Also

### Topics

Introduced before R2006a

## Support

#### Model-Based Design for Embedded Control Systems

Download white paper