##
Partial Fraction Expansion: `residued.m`

Figure J.9 gives a listing of a matlab function for computing a
``right justified'' partial fraction expansion (PFE) of an IIR digital
filter
as described in §6.8 (and below).
The code in Fig.J.9 was written to work in Octave, and also in Matlab if the '

`m`' argument is omitted (in two places).

function [r, p, f, e] = residued(b, a, toler) if nargin<3, toler=0.001; end NUM = b(:)'; DEN = a(:)'; nb = length(NUM); na = length(DEN); f = []; if na<=nb f = filter(NUM,DEN,[1,zeros(nb-na)]); NUM = NUM - conv(DEN,f); NUM = NUM(nb-na+2:end); end [r,p,f2,e] = residuez(NUM,DEN,toler); |

### Method

The FIR part is first extracted, and the (strictly proper) remainder is passed to`residuez`for expansion of the IIR part (into a sum of complex resonators). One must remember that, in this case, the impulse-response of the IIR part begins

*after*the impulse-response of the FIR part has finished,

*i.e.*,

`residued`(with a comparison to

`residuez`).

**Next Section:**

Parallel SOS to Transfer Function: psos2tf.m

**Previous Section:**

Partial Fraction Expansion: residuez.m