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.,



See §6.8.8 for an example usage of residued (with a comparison to residuez).
Next Section:
Parallel SOS to Transfer Function: psos2tf.m
Previous Section:
Partial Fraction Expansion: residuez.m