Documentation |
z-transform partial-fraction expansion
[r,p,k] = residuez(b,a)
[b,a] = residuez(r,p,k)
residuez converts a discrete time system, expressed as the ratio of two polynomials, to partial fraction expansion, or residue, form. It also converts the partial fraction expansion back to the original polynomial coefficients.
Note: Numerically, the partial fraction expansion of a ratio of polynomials is an ill-posed problem. If the denominator polynomial is near a polynomial with multiple roots, then small changes in the data, including roundoff errors, can cause arbitrarily large changes in the resulting poles and residues. You should use state-space (or pole-zero representations instead. |
[r,p,k] = residuez(b,a) finds the residues, poles, and direct terms of a partial fraction expansion of the ratio of two polynomials, b(z) and a(z). Vectors b and a specify the coefficients of the polynomials of the discrete-time system b(z)/a(z) in descending powers of z.
$$\begin{array}{c}B(z)={b}_{0}+{b}_{1}{z}^{-1}+{b}_{2}{z}^{-2}+\cdots +{b}_{m}{z}^{-m}\\ A(z)={a}_{0}+{a}_{1}{z}^{-1}+{a}_{2}{z}^{-2}+\cdots +{a}_{n}{z}^{-n}\end{array}$$
If there are no multiple roots and a > n-1,
$$\frac{B(z)}{A(z)}=\frac{r(1)}{1-p(1){z}^{-1}}+\cdots +\frac{r(n)}{1-p(n){z}^{-1}}+k(1)+k(2){z}^{-1}+\cdots +k(m-n+1){z}^{-(m-n)}$$
The returned column vector r contains the residues, column vector p contains the pole locations, and row vector k contains the direct terms. The number of poles is
n = length(a)-1 = length(r) = length(p)
The direct term coefficient vector k is empty if length(b) is less than length(a); otherwise:
length(k) = length(b) - length(a) + 1
If p(j) = ... = p(j+s-1) is a pole of multiplicity s, then the expansion includes terms of the form
$$\frac{r(j)}{1-p(j){z}^{-1}}+\frac{r(j+1)}{{(1-p(j){z}^{-1})}^{2}}+\cdots +\frac{r(j+{s}_{r}-1)}{{(1-p(j){z}^{-1})}^{s}}$$
[b,a] = residuez(r,p,k) with three input arguments and two output arguments, converts the partial fraction expansion back to polynomials with coefficients in row vectors b and a.
The residue function in the standard MATLAB^{®} language is very similar to residuez. It computes the partial fraction expansion of continuous-time systems in the Laplace domain (see reference [1]), rather than discrete-time systems in the z-domain as does residuez.