Descriptor State-Space
Model linear implicit systems
Libraries:
Simulink /
Continuous
Description
The Descriptor State-Space block allows you to model linear implicit systems that can be expressed in the form 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 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
where the variables have the following meanings:
x is the state vector
u is the input vector
y is the output vector
Ports
Input
Input 1 — Input signal
scalar | vector
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
Output 1 — Output vector
scalar | vector
Real-valued input vector of type double
whose width
is the number of rows in the C and
D matrices.
Data Types: double
Parameters
E — Mass matrix
1
(default) | scalar | matrix
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' |
A — Matrix coefficient, A
1
(default) | scalar | matrix
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' |
B — Matrix coefficient, B
1 (default) | scalar | vector | matrix
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' |
C — Matrix coefficient, C
1 (default) | scalar | vector | matrix
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' |
D — Matrix coefficient, D
1 (default) | scalar | vector | matrix
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' |
Initial condition — Initial condition of states
0
(default) | scalar | vector | matrix
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' |
Direct feedthrough — Whether output signal value depends on input signal value
True
(default) | False
| Auto
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 the system 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' |
Linearize to sparse model — Linearize states to sparse matrices
on
(default) | off
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.
Absolute tolerance — Absolute tolerance for computing block states
auto
(default) | scalar | vector
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' |
State Name (e.g., 'position') — Option to assign unique names to states
' '
(default) | character vector | cell array of character vectors | MATLAB® variable | ...
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
, andc
, 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, enternames
.
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
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Not recommended for production code.
Consider using the Model Discretizer to map continuous blocks such as the Descriptor State-Space block to discrete equivalents that support code generation. To open the Model Discretizer, in the Apps tab, under Control Systems, click Model Discretizer.
Version History
Introduced in R2018b
See Also
Blocks
Functions
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other bat365 country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)