Determine if dynamic system model is stable
a logical value of
B = isstable(
true) if the dynamic system model
sys has stable dynamics, and a logical value of
false) otherwise. If
sys is a model array, then
the function returns
1 only if all the models in
isstable returns a logical value of
true) for stability of a dynamic system if:
In continuous-time systems, all the poles lie in the open left half of the complex plane.
In discrete-time systems, all the poles lie inside the open unit disk.
isstable is supported only for analytical models with a finite number of
Determine Stability of Discrete-Time Transfer Function Model
Determine the stability of this discrete-time SISO transfer function model with a sample time of
Create the discrete-time transfer function model.
sys = tf([2,0],[4,0,3,-1],0.1);
Examine the poles of the system.
P = abs(pole(sys))
P = 3×1 0.9159 0.9159 0.2980
All the poles of the transfer function model have a magnitude less than
1, so all the poles lie within the open unit disk and the system is stable.
Confirm the stability of the model using
B = isstable(sys)
B = logical 1
sys is stable.
Determine Stability of Continuous-Time Zero-Pole-Gain Model
Determine the stability of this continuous-time zero-pole-gain model.
Create the model as a
zpk model object by specifying the zeros, poles, and gain.
sys = zpk(,[-2-3*j,-2+3*j,0.5],2);
Because one pole of the model lies in the right half of the complex plane, the system is unstable.
Confirm the instability of the model using
B = isstable(sys)
B = logical 0
sys is unstable.
Determine Stability of Models in Model Array
Determine the stability of an array of SISO transfer function models with poles varying from
To create the array, first initialize an array of dimension
[length(a),1] with zero-valued SISO transfer functions.
a = [-2:2]; sys = tf(zeros(1,1,length(a)));
Populate the array with transfer functions of the form
for j = 1:length(a) sys(1,1,j) = tf(1,[1 -a(j)]); end
isstable can tell you whether all the models in model array are stable or each individual model is stable.
Examine the stability of the model array.
B_all = isstable(sys)
B_all = logical 0
isstable returns a single logical value that is
true) only if all models in the array are stable.
sys contains some models with nonnegative poles, which are not stable. Therefore,
false) for the entire array.
Examine the stability of each model in the array by using
B_elem = isstable(sys,'elem')
B_elem = 5x1 logical array 1 1 0 0 0
The function returns an array of logical values that indicate the stability of the corresponding entry in the model array. For example,
1, which indicates that the second model in the array,
sys(1,1,2) is stable. This is because
sys(1,1,2) has a pole at
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
sys is a generalized state-space model
genss or an uncertain state-space model
uss (Robust Control Toolbox),
isstable checks the stability of the current or
nominal value of
sys is an array of models,
checks the stability of every model in the array.
If you use
B = isstable(sys), the output is
true) only if all the models in the array are stable.
If you use
B = isstable(sys,'elem'), the output is a logical array, the entries of which indicate the stability of the corresponding entry in the model array.
For more information on model arrays, see Model Arrays.
B — True or false result
0 | logical array
True or false result, returned as
1 for a stable model or
0 for an unstable model.
'elem' flag causes
isstable to return an
array of logical values with same dimensions as the model array. The values in the array
indicate the stability of the corresponding entry in the model array.
Introduced in R2012a