#### Polynomial Division in Matlab

The matlab function `deconv` (*deconvolution*) can be used
to perform *polynomial long division* in order to split an improper
transfer function into its FIR and strictly proper parts:

B = [ 2 6 6 2]; % 2*(1+1/z)^3 A = [ 1 -2 1]; % (1-1/z)^2 [firpart,remainder] = deconv(B,A) % firpart = % 2 10 % remainder = % 0 0 24 -8Thus, this example finds that is as written in Eq.(6.21). This result can be checked by obtaining a common denominator in order to recalculate the direct-form numerator:

Bh = remainder + conv(firpart,A) % = 2 6 6 2

The operation `deconv(B,A)` can be implemented using
`filter` in a manner analogous to the polynomial
multiplication case (see §6.8.8 above):

firpart = filter(B,A,[1,zeros(1,length(B)-length(A))]) % = 2 10 remainder = B - conv(firpart,A) % = 0 0 24 -8That this must work can be seen by looking at Eq.(6.21) and noting that the impulse-response of the remainder (the strictly proper part) does not begin until time , so that the first two samples of the impulse-response come only from the FIR part.

In summary, we may conveniently use convolution and deconvolution to perform polynomial multiplication and division, respectively, such as when converting transfer functions to various alternate forms.

When carrying out a partial fraction expansion on a transfer function having a numerator order which equals or exceeds the denominator order, a necessary preliminary step is to perform long division to obtain an FIR filter in parallel with a strictly proper transfer function. This section describes how an FIR part of any length can be extracted from an IIR filter, and this can be used for PFEs as well as for more advanced applications [].

**Next Section:**

Separating the Transfer Function Numerator and Denominator

**Previous Section:**

Polynomial Multiplication in Matlab