Question on pole-zero cancellation
- From: Oli Filth <catch@xxxxxxxxxxxxxx>
- Date: Wed, 07 Jun 2006 20:03:43 GMT
Hi,
I have a conundrum which I'm tying myself in knots thinking about; if anyone can shed any light it would be much appreciated!
Take as a simple example the moving-sum filter:
L-1
H(z) = Sum { z^-n }
n=0
= 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?
--
Oli
.
- Follow-Ups:
- Re: Question on pole-zero cancellation
- From: daor
- Re: Question on pole-zero cancellation
- From: robert bristow-johnson
- Re: Question on pole-zero cancellation
- From: Randy Yates
- Re: Question on pole-zero cancellation
- From: Rune Allnor
- Re: Question on pole-zero cancellation
- Prev by Date: Re: Where can I find a good C editor (free)
- Next by Date: Re: Question on pole-zero cancellation
- Previous by thread: Link data file as variable to a project in CCS ?
- Next by thread: Re: Question on pole-zero cancellation
- Index(es):