I am having trouble wrapping my head around digital filters with different orders of numerator and denominator. Let me know if any of these points is wrong:
- All (digital or analog) transfer functions have the same number of poles and zeros, if you include the ones at infinity. So $H(s) = 1/s$ has a pole at the origin and a zero at infinity, which is important for visualizing the amplitude response surface in the S plane.
- But usually when we say "number of poles" or zeros we mean finite poles or zeros. So $H(s) = 1/s$ is considered to have one pole and no zeros.
- Digital filters designed by bilinear transform from analog filters always have the same number of poles and zeros (and none are ever at infinity). But digital filters can also be made with different orders of numerator and denominator.
- To find the poles and zeros of a digital transfer function in the general case, you first must express it as positive powers of z ("controls engineer format") and then find the roots of the numerator and denominator, same way as an analog filter. So for example, a single-sample delay in "DSP engineer format" $H(z) = z^{−1}$ is rewritten as $H(z) = 1/z$, which shows that it has a pole at the origin and a zero at infinity, so it's considered to have "one pole and no (finite) zeros".
So then I become confused:
- FIR filters are described as "all-zero filters". 1 2 They can be represented as a transfer function like $$H(z) = b_0 + b_1 z^{-1} + b_2 z^{-2}$$ But if you convert to positive powers of z to find the poles and zeros, you get: $$H(z) = \frac{b_0 {z}^{2} + b_1 z + b_2}{z^2}$$ which has just as many poles at the origin as there are zeros. What is the significance of these poles? These are each the $H(z) = z^{−1}$ delay elements used to produce the feedforward signals? Seems like the poles end up at the origin if the delay elements are not fed back to the input? So FIR filters are not actually all-zero filters?
- Similarly, maxflat filters (Selesnick-Burrus generalized Butterworth) are described as having "more zeros than poles", which is supposed to be computationally advantageous. (Why?) The Matlab example produces
b = [0.0950 0.2849 0.2849 0.0950]
anda = [1.0000 -0.2402]
. I think this is "negative powers of z" format, so this would represent a transfer function $$H(z) = \frac {0.0950 + 0.2849 z^{-1} + 0.2849 z^{-2} + 0.0950 z^{-3}} {1.0000 - 0.2402 z^{-1}} $$ - But again, if you convert to positive powers of z, you get: $$H(z) = \frac {0.0950 z^3 + 0.2849 z^2 + 0.2849 z + 0.0950} {1.0000 z^3 - 0.2402 z^2} $$ which has 3 poles again, 2 of which are at the origin. So the number of poles and zeros is again the same, and they're all finite, too.
If adding a zero to a digital transfer function always also adds a finite pole, I don't understand how a filter with "more zeros than poles" can exist, or be advantageous. Might as well use those poles to affect the frequency response if you have them?
Is there some convention where poles at the origin are not included in the tally, like the way poles at infinity are not included? If so, why?