This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Stable-unstable decomposition


[G1,GNS] = stabsep(G,'abstol',ATOL,'reltol',RTOL)
[G1,G2]=stabsep(G, ...,'Mode', MODE,'Offset', ALPHA)
[G1,G2] = stabsep(G, opts)


[GS,GNS]=stabsep(G) decomposes the LTI model G into its stable and unstable parts

       G = GS + GNS

where GS contains all stable modes that can be separated from the unstable modes in a numerically stable way, and GNS contains the remaining modes. GNS is always strictly proper.

[G1,GNS] = stabsep(G,'abstol',ATOL,'reltol',RTOL) specifies absolute and relative error tolerances for the stable/unstable decomposition. The frequency responses of G and GS + GNS should differ by no more than ATOL+RTOL*abs(G). Increasing these tolerances helps separate nearby stable and unstable modes at the expense of accuracy. The default values are ATOL=0 and RTOL=1e-8.

[G1,G2]=stabsep(G, ...,'Mode', MODE,'Offset', ALPHA) produces a more general stable/unstable decomposition where G1 includes all separable poles lying in the regions defined using offset ALPHA. This can be useful when there are numerical accuracy issues. For example, if you have a pair of poles close to, but slightly to the left of the jω-axis, you can decide not to include them in the stable part of the decomposition if numerical considerations lead you to believe that the poles may be in fact unstable

This table lists the stable/unstable boundaries as defined by the offset ALPHA.


Continuous Time Region

Discrete Time Region



1 |z| < 1-ALPHA


Re(s)> ALPHA*max(1,|Im(s)|)

2 |z| > 1+ALPHA

The default values are MODE=1 and ALPHA=0.

[G1,G2] = stabsep(G, opts) computes the stable/unstable decomposition of G using the options specified in the stabsepOptions object opts.


Compute a stable/unstable decomposition with absolute error no larger than 1e-5 and an offset of 0.1:

h = zpk(1,[-2 -1 1 -0.001],0.1)
[hs,hns] = stabsep(h,stabsepOptions('AbsTol',1e-5,'Offset',0.1));

The stable part of the decomposition has poles at -1 and -2.

-0.050075 (s+2.999)
    (s+1) (s+2)

The unstable part of the decomposition has poles at +1 and -.001 (which is nominally stable).

0.050075 (s-1)
(s+0.001) (s-1)

Introduced before R2006a