Re: Question on pole-zero cancellation



Oli Filth wrote:

Rune Allnor said the following on 07/06/2006 21:20:

Oli Filth skrev:

Take as a simple example the moving-sum filter:

H(z) = 1 - z^-L
--------
1 - z^-1

The numerator includes a zero at DC, the denominator gives a pole at DC,
and so these cancel, giving non-zero response at DC.

However, if we implement the filter recursively:
(I hope my ASCII art comes out ok...)

+------+
---+--->| z^-L |------+
| +------+ | -
| v
+----------------->0-----------------+----->
^ |
| +------+ |
+-----| z^-1 |<---+
+------+

This is equivalent to:

+------+
---+--->| z^-L |------+
| +------+ | -
| v
+----------------->0--->0-----------------+----->
^ |
| +------+ |
+-----| z^-1 |<---+
+------+

i.e. implementing the feedforward section before the feedback section,
and doing the two additions separately.

The feedforward section has already killed the DC component, so we can't
recover it.

So my question is, how does the recursive moving-sum filter manage to
work (and we know it does), if it appears to be exactly equivalent to
something that blocks DC?


Because the zero at DC is exactly cancelled by a pole.


Indeed, this is mathematically the case. But if we implement the unit-circle zero first, then the output of that section contains a perfect spectral null. If you put in a true DC signal, the output will be zero. Once that's happened, no amount of subsequent gain can recover the signal at that frequency, not even the infinite gain that a pole provides.

Any time you do 0 * infinity you have to stop thinking stepwise and start taking limits as some x -> 0 (or x -> infinity).

In this case, what happens in practices is that the unit-circle section puts out a transient that will always integrate to the true DC value, so the DC value is preserved (at least mathematically).

Note that this type of filter will work in practice _provided_ that you use bit-exact math, you initialize all your variables correctly, and nothing gets smacked by a stray gamma ray or other transient effects. So this is something that I might expect to see implemented with integer arithmetic, but never with floating point.

Note that the
second block scheme of yours is an expanded representation of the
total system, not the actual system.


I'm not sure what you mean. The two block diagrams are the *exact* same system, and both explicitly implement:

y[n] = y[n-1] + x[n] - x[n-L]


Correct.

-- snip --

I don't disagree. But conceptually, how do we resolve the paradox? Imagine another example, a channel equaliser. If the (noiseless) channel contains a spectral null (e^{j.theta} - z) for some theta, what equaliser would we use to recover a component at theta? I don't think that 1/(e^{j.omega} - z) would be very useful, even though mathematically it cancels the channel response. So why does it work above?

Pole-zero cancellations work if the mathematics is exact. It's easy to make a moving average filter be bit-accurate because there are no multiplies. Doing this with any arbitrary omega is not possible; I doubt that it is possible with _any_ set of non-unity gains in an IIR.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

Posting from Google? See http://cfaj.freeshell.org/google/

"Applied Control Theory for Embedded Systems" came out in April.
See details at http://www.wescottdesign.com/actfes/actfes.html
.



Relevant Pages

  • Re: Question on pole-zero cancellation
    ... The numerator includes a zero at DC, the denominator gives a pole at DC, ... no matter how the factor 1 is represented, provided the representation ... By factoring out the poles and zeros that cancel before we implement ...
    (comp.dsp)
  • uncontrollable system?
    ... it is noted that there are pole and zero that can be cancel. ... How to find a UNCONTROLLABLE realization of the system???? ...
    (sci.engr.control)
  • Re: Poles an Zeros
    ... I have never heard of any confrontation occurring between the Polish air ... force and a Japanese Zero. ... the Zero would have defeated the Pole. ... Need to learn how to apply control theory in your embedded system? ...
    (sci.electronics.basics)
  • Re: pole zero stuff
    ... > I am confused about pole - zero diagrams and how they relate to filter ... Imagine that the plane is covered flat with an elastic sheet. ... location of each pole. ... axis in the s-plane or the unit circle in the z-plane. ...
    (comp.dsp)
  • Re: Checking for null values on forms BeforeUpdate event - How?
    ... (You forgot to concatenate the control name to the rest of the message). ... Doug Steele, Microsoft Access MVP ... Check for null values or zero length strings (in each field, ... Cancel the BeforeUpdate event ...
    (microsoft.public.access.formscoding)