Poles of dynamic system
returns the poles of the SISO or MIMO dynamic system
P = pole(
sys. The output is expressed as the reciprocal of the time
units specified in
sys.TimeUnit. The poles of a dynamic system
determine the stability and response of the system.
An open-loop linear time-invariant system is stable if:
In continuous-time, all the poles of the transfer function have negative real parts. When the poles are visualized on the complex s-plane, then they must all lie in the left-half plane (LHP) to ensure stability.
In discrete-time, all the poles must have a magnitude strictly smaller than one, that is they must all lie inside the unit circle.
Poles of Discrete-Time Transfer Function
Compute the poles of the following discrete-time transfer function:
sys = tf([0.04798 0.0464],[1 -1.81 0.9048],0.1); P = pole(sys)
P = 2×1 complex 0.9050 + 0.2929i 0.9050 - 0.2929i
For stable discrete systems, all their poles must have a magnitude strictly smaller than one, that is they must all lie inside the unit circle. The poles in this example are a pair of complex conjugates, and lie inside the unit circle. Hence, the system
sys is stable.
Poles of Transfer Function
Calculate the poles of following transfer function:
sys = tf([4.2,0.25,-0.004],[1,9.6,17]); P = pole(sys)
P = 2×1 -7.2576 -2.3424
For stable continuous systems, all their poles must have negative real parts.
sys is stable since the poles are negative, that is, they lie in the left half of the complex plane.
Poles of Models in an Array
For this example, load
invertedPendulumArray.mat, which contains a 3-by-3 array of inverted pendulum models. The mass of the pendulum varies as you move from model to model along a single column of
sys, and the length of the pendulum varies as you move along a single row. The mass values used are 100g, 200g and 300g, and the pendulum lengths used are 3m, 2m and 1m respectively.
3x3 array of transfer functions. Each model has 1 outputs and 1 inputs.
Find poles of the model array.
P = pole(sys); P(:,:,2,1)
ans = 3×1 2.1071 -2.1642 -0.1426
P(:,:,2,1) corresponds to the poles of the model with 200g pendulum weight and 3m length.
sys — Dynamic system
dynamic system model | model array
Dynamic system, specified as a SISO or MIMO dynamic system model, or an
array of SISO or MIMO dynamic system models. 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), or
ss (Control System Toolbox) models.
sys is a generalized state-space model
genss or an uncertain state-space model
pole returns the poles of the
current or nominal value of
sys is an array of models,
returns the poles of the model corresponding to its subscript
sys. For more
information on model arrays, see Model Arrays (Control System Toolbox).
J1,...,JN — Indices of models in array whose poles you want to extract
Indices of models in array whose poles you want to extract, specified as a
positive integer. You can provide as many indices as there are array
sys. For example, if
sys is a 4-by-5 array of dynamic system models, the
following command extracts the poles for entry (2,3) in the array.
P = pole(sys,2,3);
P — Poles of the dynamic system
column vector | array
Poles of the dynamic system, returned as a scalar or an array. If
A single model, then
Pis a column vector of poles of the dynamic system model
A model array, then
Pis an array of poles of each model in
P is expressed as the reciprocal of the time units
sys.TimeUnit. For example, pole is expressed
in 1/minute if
Depending on the type of system model, poles are computed in the following way:
For state-space models, the poles are the eigenvalues of the A matrix, or the generalized eigenvalues of A – λE in the descriptor case.
For SISO transfer functions or zero-pole-gain models, the poles are the denominator roots. For more information, see
For MIMO transfer functions (or zero-pole-gain models), the poles are returned as the union of the poles for each SISO entry. If some I/O pairs have a common denominator, the roots of such I/O pair denominator are counted only once.
Multiple poles are numerically sensitive and cannot be computed with high accuracy. A pole λ with multiplicity m typically results in a cluster of computed poles distributed on a circle with center λ and radius of order
where ε is the relative machine precision (
For more information on multiple poles, see Sensitivity of Multiple Roots (Control System Toolbox).
syshas internal delays, poles are obtained by first setting all internal delays to zero so that the system has a finite number of poles, thereby creating a zero-order Padé approximation. For some systems, setting delays to zero creates singular algebraic loops, which result in either improper or ill-defined, zero-delay approximations. For these systems,
polereturns an error.
To assess the stability of models with internal delays, use
Introduced in R2012a
- Pole and Zero Locations (Control System Toolbox)
- Sensitivity of Multiple Roots (Control System Toolbox)