Extract discrete-time linear state-space model around operating point
Name of the Simulink® system from which the linear model is extracted.
x = Simulink.BlockDiagram.getInitialState('sys');
can then change the operating point values within this structure by
If the state
contains different data types (for example,
Sample time of the discrete-time linearized model
An optional argument that invokes the perturbation algorithm
created prior to MATLAB® 5.3. Invoking this optional argument
is equivalent to calling
A three-element vector of optional arguments:
The perturbation values used to perform the perturbation of all the states and inputs of the model. The default values are
xpert = para(1) + 1e-3*para(1)*abs(x) upert = para(1) + 1e-3*para(1)*abs(u)
When a model has model references using the Model block, you must use the Simulink structure
format to specify
xpert = Simulink.BlockDiagram.getInitialState('sys');
can then change the perturbation values within this structure by editing
perturbation input arguments are only available when invoking the
perturbation algorithm created prior to MATLAB 5.3, either by
dlinmod provides only basic linearization functionality. For full
linearization functionality, use Simulink
Control Design™ software. For more information, see Choose Linearization Tools (Simulink Control Design).
dlinmod computes a linear state-space model for a discrete-time system by
linearizing each block in a model individually.
linmod obtains linear models from systems
of ordinary differential equations described as Simulink models.
Inputs and outputs are denoted in Simulink block diagrams using
Inport and Outport blocks.
The default algorithm uses preprogrammed analytic block Jacobians for most blocks which should result in more accurate linearization than numerical perturbation of block inputs and states. A list of blocks that have preprogrammed analytic Jacobians is available in the Simulink Control Design documentation along with a discussion of the block-by-block analytic algorithm for linearization.
Discrete-Time System Linearization
dlinmod can linearize
discrete, multirate, and hybrid continuous and discrete systems at
any given sampling time. Use the same calling syntax for
linmod, but insert the sample time at which
to perform the linearization as the second argument. For example,
[Ad,Bd,Cd,Dd] = dlinmod('sys', Ts, x, u);
produces a discrete state-space model at the sampling
Ts and the operating point given by the state
x and input vector
To obtain a continuous model approximation of a discrete system, set
For systems composed of linear, multirate, discrete, and continuous
dlinmod produces linear models having identical
frequency and time responses (for constant inputs) at the converted
Ts, provided that
Tsis an integer multiple of all the sampling times in the system.
The system is stable.
For systems that do not meet the first condition, in general
the linearization is a time-varying system, which cannot be represented
with the [A,B,C,D]
state-space model that
Computing the eigenvalues of the linearized matrix
an indication of the stability of the system. The system is stable
Ts>0 and the eigenvalues are within the unit
circle, as determined by this statement:
all(abs(eig(Ad))) < 1
Likewise, the system is stable if
Ts = 0 and
the eigenvalues are in the left half plane, as determined by this
all(real(eig(Ad))) < 0
When the system is unstable and the sample time is not an integer
multiple of the other sampling times,
which can be complex. The eigenvalues of the
in this case still, however, provide a good indication of stability.
You can use
dlinmod to convert the sample
times of a system to other values or to convert a linear discrete
system to a continuous system or vice versa.
By default, the system time is set to zero. For systems that
are dependent on time, you can set the variable
a two-element vector, where the second element is used to set the
t at which to obtain the linear model.
The ordering of the states from the nonlinear model to the linear model is maintained. For Simulink systems, a character vector variable that contains the block name associated with each state can be obtained using
[sizes,x0,xstring] = sys
xstring is a vector of strings whose ith
row is the block name associated with the
Inputs and outputs are numbered sequentially on the diagram.
For single-input multi-output systems, you
can convert to transfer function form using the routine
to zero-pole form using
ss2zp. You can also convert
the linearized models to LTI objects using
This function produces an LTI object in state-space form that can
be further converted to transfer function or zero-pole-gain form using
The default algorithms in
Transport Delay blocks by replacing the linearization of the blocks
with a Pade approximation. For the
linearization of a model that contains Derivative or Transport Delay
blocks can be troublesome. For more information, see Linearizing Models.
Introduced in R2007a