pfss
partial fraction decomposition
Syntax
elts = pfss(Sl) elts = pfss(Sl,rmax) elts = pfss(Sl,cord) elts = pfss(Sl,rmax,cord)
Arguments
- Sl
- A linear dynamical system in state-space, or a transfer function representation (see syslin), or any rational fraction. 
- rmax
- A real number controlling the conditioning of block diagonalization (see bdiag). 
- cord
- A character string with possible values - 'c'or- 'd'.
- elts
- List of linear systems, or list of rationals: the components of the decomposition. - If - Slis a transfer function or any other rational and has an integer part (degree(Sl.num)>=degree(Sl.den)),- elts(1:$-1)are rational components and- elts($)is the integer part (polynomial).
Description
Partial fraction decomposition of the linear system Sl.
elts is the list of linear systems which add up to Sl
            i.e. elts=list(S1,S2,S3,...,Sn) with:
Sl = S1 + S2 +... +Sn.
Each Si contains some poles of  S according to the
            block-diagonalization of the A matrix of S.
For non proper systems, the polynomial part of Sl is returned in
            elts($).
If Sl is given in transfer form, it is first
            converted into state-space by tf2ss
            and each subsystem Si is then converted in
            transfer form by ss2tf.
The A matrix is of the state-space is put into block diagonal form
            by function bdiag. The optional parameter
            rmax is sent to bdiag,
            rmax should be set to a large number to enforce
            block-diagonalization.
If the optional flag cord='c' is given the elements in elts
            are sorted according to the real part (resp. magnitude if cord='d')
            of the eigenvalues of A matrices.
Examples
// With a linear system (state-space): W = ssrand(1,1,6); elts = pfss(W); W1 = 0; for k = 1:size(elts) W1 = W1 + ss2tf(elts(k)); end clean(ss2tf(W) - W1)
// With a rational (transfer function or any other one), without integer part: num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3; den = 22952.25 + 4117.77*%s + 490.63*%s^2 + 33.06*%s^3 + %s^4; // degree(den)>degree(num) h2 = syslin('c',num/den) d = pfss(h2) // With a rational with an integer part: degree(num)>=degree(den): num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3 + %s^5; h2 = syslin('c',num/den) d = pfss(h2) typeof(d($)) // last component = integer part = polynomial
See also
| Report an issue | ||
| << markp2ss | Représentation de Systèmes Linéaires | pol2des >> |