Re: FIR design with zeroes
- From: "Fred Marshall" <fmarshallx@xxxxxxxxxxxxxxxxxxxx>
- Date: Sun, 2 Apr 2006 13:40:17 -0700
"Grant Griffin" <nospam@xxxxxxxxx> wrote in message
news:bdfe1$442f58ba$4088dbc7$27209@xxxxxxxxxxxxxxxx
R Potter wrote:
I have a problem. I need to design a FIR with a certain fraction of
the taps being zero. Can anyone point me to references that are
generalizations to PArks-McLellan or others that do this?
There's a very nice section on "Nyquist" (aka "Lth Band") filters in
"Digital Signal Processing: A Computer-Based Approach" by Sanjit K. Mitra
(gesundheit!) The Lth-Band capability of ScopeFIR is drawn from that.
A special case of this is the famous "halfband" filter (where L = 2). The
basic idea is to rig the design parameters so as to coax the PM algorithm
into generating a design with lots of zero-valued coefficients. That
basically works but the problem is that the PM algorithm works primarily
in the frequency domain, so the zero-valued coefficients end up being
_nearly_ zero instead of _exactly_ zero.
I've been wondering how to combat that. Currently, ScopeFIR provides a
feature called "zeroize" that simply sets the applicable coefficients to
zero. However, that changes the frequency response slightly, notably by
reducing the stopband attenuation (darn). If anybody knows of a solution
to this problem, I'd be eternally grateful.
(BTW, even though it's still April 0th here-and-now, I'm serious this
time. Honest. ;-)
Grant,
Perhaps you know this but one of the things to look out for in halfband
design approaches is this:
If an even-length filter is designed with the desired gain of 0.5 at f=0
that is not to say that the designed filter will have passband gain of
exactly 0.5 or less. In fact, the filter will have gain of 0.5 +/- the peak
error/ripple.
So, if we increase the sample rate of the filter by 2 and add a center
coefficient of exactly 0.5, the filter won't be exactly antisymmetric in
frequency.
The proper thing to do is to make the center coefficient equal to 0.5 PLUS
the peak error/ripple value. This "lifts" the frequency response to where
all of the stopband "negative peaks" become double zeros.
Without doing this, the filter coefficients can't go to zero as intended.
Alternately you can normalize the sum of the coefficients to 0.5 and *then*
add 0.5 as a center coefficient.
Then, if you must have 1.0 median gain in the passband, you can normalize
the whole thing so the sum of the coefficients is 1.0.
fred harris publishes a "trick" that works with PM:
Compute an even-length filter with passband gain of 0.5, a passband edge
somewhere like 0.4 or whatever you want, stopband edges both at 0.5,0.5 with
gain 0.
After this filter is designed, normalize the coefficients to sum to 0.5.
Then increase the sample rate of the filter by 2 (stuff it with zeros).
Then add a center coefficient of 0.5.
All the desired zeros are forced and are exactly what you want.
Fred
.
- References:
- FIR design with zeroes
- From: R Potter
- Re: FIR design with zeroes
- From: Grant Griffin
- FIR design with zeroes
- Prev by Date: Re: FIR design with zeroes
- Next by Date: Re: Periodicity of the DFT - was Re: Phase of FFT compared to phase of Sinusoid
- Previous by thread: Re: FIR design with zeroes
- Next by thread: Re: FIR design with zeroes
- Index(es):
Relevant Pages
|