# Descriptor State-Space

Model linear implicit systems

Libraries:

## Description

The Descriptor State-Space block allows you to model linear implicit systems that can be expressed in the form$E\stackrel{˙}{x}=Ax+Bu$ where E is the mass matrix of the system. When E is nonsingular and therefore invertible, the system can be written in its explicit form $\stackrel{˙}{x}={E}^{-1}Ax+{E}^{-1}Bu$ and modeled using the State-Space block.

When the mass matrix E is singular, one or more derivatives of the dependent variables of the system are not present in the equations. These variables are called algebraic variables. Differential equations that contain such algebraic variables are called differential algebraic equations. Their state space representation is of the form

`$\begin{array}{c}E\stackrel{˙}{x}=Ax+Bu\\ y=Cx+Du\end{array}$`

where the variables have the following meanings:

• x is the state vector

• u is the input vector

• y is the output vector

## Ports

### Input

expand all

Real-valued input signal of type `double` whose width matches the number of columns in the B and D matrices.

This port has direct feedthrough when:

• You set the Direct Feedthrough parameter to `True`.

• You set the Direct Feedthrough parameter to `Auto` and the software determines that the block has direct feedthrough.

Data Types: `double`

### Output

expand all

Real-valued input vector of type `double` whose width is the number of rows in the C and D matrices.

Data Types: `double`

## Parameters

expand all

Specify the mass matrix E as a real-valued n-by-n matrix, where n is the number of states in the system. E must be the same size as A. E can be singular or non-singular.

#### Programmatic Use

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

Specify the matrix coefficient A as a real-valued n-by-n matrix, where n is the number of states in the system. A must be the same size as E.

#### Programmatic Use

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

Specify the matrix coefficient B as a real-valued n-by-m matrix, where n is the number of states in the system and m is the number of inputs.

#### Programmatic Use

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

Specify the matrix coefficient C as a real-valued r-by-n matrix, where n is the number of states in the system and r is the number of outputs.

#### Programmatic Use

 Block Parameter: `C` Type: string | 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 of the system and m is the number of inputs to the system.

#### Programmatic Use

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

Specify initial condition of the block states. The minimum and maximum values are bound by the Output minimum and Output maximum block parameters.

Tip

Simulink® software does not allow the initial condition of this block to be `inf` or `NaN`.

#### Dependencies

To enable this parameter, set the Initial condition source to `internal`.

#### Programmatic Use

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

Specify whether the block has direct feedthrough. A block has direct feedthrough when the value of one or more output signals directly depends on the value of one or more input signals.

• `True` — The output signal value directly depends on the input signal value.

• `False` — The output signal value does not directly depend on input signal value.

• `Auto` — The software determines whether the output signal value directly depends on the input signal value based on the characteristics of the matrices.

When this block implements a system with more than 500 continuous states, specifying this parameter as `True` or `False` might speed up the simulation.

#### Programmatic Use

 Block Parameter: `DirectFeedthrough` Type: string | character vector Values: `'True'` | `'False'``'Auto'` Default: `'True'`

For Simulink Control Design™ workflows, linearize the system represented by the Descriptor State-Space block to a sparse model during linearization.

Disable this parameter to linearize the system to a non-sparse explicit state-space model.

Variable-step solvers use absolute and relative tolerances when choosing the step size to determine whether the error in state calculations is acceptable.

To inherit the absolute tolerance from the Absolute tolerance configuration parameter, specify this parameter value as `auto` or `-1`.

To specify an absolute tolerance for this block that overrides the value specified for the Absolute tolerance configuration parameter:

• Enter a real, positive scalar value to use to compute all block states.

• Enter a real vector with dimensions that match the dimensions of the continuous states for the block.

#### Programmatic Use

 Block Parameter: ` AbsoluteTolerance` Type: string | character vector Values: `'auto'` | `'-1'` | positive, real scalar | vector of positive, real scalars Default: `'auto'`

Use this parameter to optionally assign names to the states of this block. The names you assign apply only to the states of this block.

• To use default state names, leave this field blank (`''`).

• To assign a single name to a single state, enter the name between quotes. For example, to name a single state `position`, enter `"position"`.

• To assign names to multiple states, specify this parameter value as a cell array of character vectors. Each name in the cell array must be unique. For example, to assign the names `a`, `b`, and `c`, enter `{'a','b','c'}`.

• To specify the names using a MATLAB variable, enter the name of the variable without quotes. For example, to use the variable `names` to specify the state names, enter `names`.

You can specify a number of names that is less than the number of states in the block. In this case, the state names are used for multiple states, and the number of states must divide evenly into the number of state names. For example, when you specify two names for a block that has four states, the first name is used for the first two states, and the second name is used for the last two states.

#### Programmatic Use

 Block Parameter: `ContinuousStateAttributes` Type: string | character vector Values: `' '` | user-defined Default: `' '`

## Block Characteristics

 Data Types `double` Direct Feedthrough `noa` Multidimensional Signals `no` Variable-Size Signals `no` Zero-Crossing Detection `no` a Direct feedthrough characteristics for this block depend on block parameter values.

## Version History

Introduced in R2018b