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