modalreal
Syntax
Description
[___] = modalreal(
specifies options for controlling the block size and normalizing 2-by-2 blocks associated
with complex pairs.sys
,Name=Value
)
Examples
pendulumCartSSModel.mat
contains the state-space model of an inverted pendulum on a cart where the outputs are the cart displacement and the pendulum angle . The control input u
is the horizontal force on the cart.
First, load the state-space model sys
to the workspace.
load('pendulumCartSSModel.mat','sys');
Convert sys
to modal form and extract the block sizes.
[msys,blks,TL,TR] = modalreal(sys)
msys = A = x1 x2 x3 x4 x1 0 0 0 0 x2 0 -0.05 0 0 x3 0 0 -5.503 0 x4 0 0 0 5.453 B = u1 x1 1.875 x2 6.298 x3 12.8 x4 12.05 C = x1 x2 x3 x4 y1 16 -4.763 -0.003696 0.003652 y2 0 0.003969 -0.03663 0.03685 D = u1 y1 0 y2 0 Continuous-time state-space model. Model Properties
blks = 4×1
1
1
1
1
TL = 4×4
0.0625 1.2500 -0.0000 -0.1250
0 4.1986 0.0210 -0.4199
0 0.2285 -13.5873 2.4693
0 -0.2251 13.6287 2.4995
TR = 4×4
16.0000 -4.7631 -0.0037 0.0037
0 0.2381 0.0203 0.0199
0 0.0040 -0.0366 0.0369
0 -0.0002 0.2015 0.2009
msys
is the modal realization of sys
, blks
represents the block sizes down the diagonal, and TL
and TR
represent the block-diagonalizing transformation matrices.
For this example, consider the following system with doubled poles and clusters of close poles:
Create a zpk
model of this system and obtain a modal realization using the function modalreal
.
sys = zpk([1 -1],[0 -10 -10.0001 1+1i 1-1i 1+1i 1-1i],100); [msys1,blks1] = modalreal(sys); blks1
blks1 = 3×1
1
4
2
msys1.A
ans = 7×7
0 0 0 0 0 0 0
0 1.0000 2.1220 0 0 0 0
0 -0.4713 1.0000 1.5296 0 0 0
0 0 0 1.0000 1.8439 0 0
0 0 0 -0.5423 1.0000 0 0
0 0 0 0 0 -10.0000 4.0571
0 0 0 0 0 0 -10.0001
msys1.B
ans = 7×1
0.1600
-0.0052
0.0201
-0.0975
0.2884
0
4.0095
sys
has a pair of poles at s
=
-10
and s
=
-10.0001
, and two complex poles of multiplicity 2 at s
=
1+i
and s
=
1-i
. As a result, the modal form msys1
is a state-space model with a block of size 2 for the two poles near s
=
-10
, and a block of size 4 for the complex eigenvalues.
Now, separate the two poles near s
=
-10
by increasing the condition number of the block-diagonalizing transformation. Set SepTol
to 1e-10
for this example.
[msys2,blks2] = modalreal(sys,SepTol=1e-10); blks2
blks2 = 4×1
1
4
1
1
msys2.A
ans = 7×7
0 0 0 0 0 0 0
0 1.0000 2.1220 0 0 0 0
0 -0.4713 1.0000 1.5296 0 0 0
0 0 0 1.0000 1.8439 0 0
0 0 0 -0.5423 1.0000 0 0
0 0 0 0 0 -10.0000 0
0 0 0 0 0 0 -10.0001
msys2.B
ans = 7×1
105 ×
0.0000
-0.0000
0.0000
-0.0000
0.0000
1.6267
1.6267
The A
matrix of msys2
includes separate diagonal elements for the poles near s
=
-10
. Increasing the condition number results in some very large values in the B
matrix.
For this example, consider the following system with complex pair poles and clusters of close poles:
Create a zpk
model of this system and obtain a modal realization using the function modalreal
.
sys = zpk([1 -1],[0 -10 -10.0001 3+4i 3-4i],100); [msys1,blks1] = modalreal(sys); blks1
blks1 = 3×1
1
2
2
msys1.A
ans = 5×5
0 0 0 0 0
0 3.0000 8.7637 0 0
0 -1.8257 3.0000 0 0
0 0 0 -10.0000 8.8001
0 0 0 0 -10.0001
msys1
is a state-space model with a block of sizes 2 for the two poles near s
=
-10
, and a pair of complex poles at s
=
3+4i
and s
=
3-4i
.
You can normalize the values of 2-by-2 blocks to show the actual pole values using the Normalize
option. Additionally, relax the relative accuracy of the block diagonalizing transformation to separate the block near s
=
-10
.
[msys2,blks2] = modalreal(sys,Normalize=true,SepTol=1e-10); blks2
blks2 = 4×1
1
2
1
1
msys2.A
ans = 5×5
0 0 0 0 0
0 3.0000 4.0000 0 0
0 -4.0000 3.0000 0 0
0 0 0 -10.0000 0
0 0 0 0 -10.0001
For complex poles, this option normalizes the 2-by-2 block of complex poles to .
Input Arguments
Dynamic system, specified as a SISO, or MIMO dynamic system model. Dynamic systems that you can use include:
Continuous-time or discrete-time numeric LTI models, such as
tf
(Control System Toolbox),zpk
(Control System Toolbox),ss
(Control System Toolbox), orpid
(Control System Toolbox) models.Generalized or uncertain LTI models such as
genss
(Control System Toolbox) oruss
(Robust Control Toolbox) models. (Using uncertain models requires Robust Control Toolbox™ software.)Identified LTI models, such as
idtf
,idss
,idproc
,idpoly
, andidgrey
models.
You cannot use frequency-response data models such as frd
(Control System Toolbox) models.
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: [msys,blks] = modalreal(sys,Normalize=true)
Relative accuracy of block diagonalization, specified as a scalar between 0 and 1.
This option limits the condition number of the block diagonalizing transformation
to roughly SepTol
/eps
. Increasing
SepTol
helps yield smaller blocks at the expense of
accuracy.
Normalize 1-by-1 and 2-by-2 diagonal blocks, specified as a logical
0
(false
) or 1
(true
).
When Normalize
is true
, the function
normalizes the block to show the pole values.
For explicit models, the function normalizes 2-by-2 blocks associated with complex pairs a±jb to .
For descriptor models, the function normalizes
1-by-1 blocks to Aj = a, Ej = 1.
2-by-2 blocks to Aj = , Ej = I.
Output Arguments
Modal state-space realization of the dynamic model, returned as an ss
(Control System Toolbox) model object. msys
is a realization where
A or (A,E) are block diagonal
and each block corresponds to a real pole, a complex pair, or a cluster of repeated
poles.
Block sizes in the block-diagonal realization, returned as a vector.
Left-side matrix of the block-diagonalizing transformation, returned as a matrix
with dimensions Nx-by-Nx, where
Nx is the number of states in the model sys
.
The algorithm transforms the state-space realization (A, B, C, D, E) of a model to block diagonal matrices (Am, Bm, Cm, Dm, Em) given by:
For explicit state-space models
For descriptor state-space models
The function returns an empty value []
for this argument when the
input model sys
is not a state-space model.
Right-side matrix of the block-diagonalizing transformation, returned as a matrix
with dimensions Nx-by-Nx, where
Nx is the number of states in the model
sys
.The algorithm transforms the state-space realization
(A, B, C,
D, E) of a model to block diagonal matrices
(Am,
Bm,
Cm,
Dm,
Em) given by:
For explicit state-space models
For descriptor state-space models
The function returns an empty value []
for this argument when the
input model sys
is not a state-space model.
Version History
Introduced in R2023b
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.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)