DSPRelated.com
Forums

Precise Filter Design

Started by Jaime A. Aranguren C., SanJaaC Electronics January 9, 2005
Hello,

For my application I need to design a filter which CLOSELY matches the
frequency response, both in amplitude and phase, of a provided analog
prototype filter. This is an old problem, I know...

I've tried bilinear transform and impulse invariant methods, as
provided by MATLAB's functions. They are not enough, I need better
performance. I've also read of covariance-invariant method, and about
frequency domain filtering.

As for the covariance-invariant method, I know there are some IEEE
papers, like the one by Perl J. and Scharf, L.L. "Covariance-Invariant
Digital Filtering", Trans on Acoustics, Speech and Signal Processing,
Vol. 25, No. 2. April 1977, pp. 143-151. But this is not part of the
susbscriptions which I am allowed to with my IEEE membership.

And as for the frequency domain digital filtering, I understand that it
consists on taking the FFT of the input signal (complex cefficients),
take the complex form of the desired frequency response, multiply them,
and perform inverse FFT (IFFT). Is it that simple? What should be taken
into account? I mean, about FFT length, widowing funtions, overlap,
sampling frequency, etc...

Could someone please explain me, and/or guide me to information
(preferably free) on the Internet about the topics? Searching at Google
for iir filter "covariance invariant" simply guides me to the IEEE
paper.

Thank you in advance,

JaaC

Jaime A. Aranguren C., SanJaaC Electronics wrote:
> Hello, > > For my application I need to design a filter which CLOSELY matches
the
> frequency response, both in amplitude and phase, of a provided analog > prototype filter. This is an old problem, I know... > > I've tried bilinear transform and impulse invariant methods, as > provided by MATLAB's functions. They are not enough, I need better > performance. I've also read of covariance-invariant method, and about > frequency domain filtering.
I'm probably revealing my infinite ignorance on the subject, but what are the constraints on the design? "Analog prototype" makes me think IIR implementation, but does it have to be? Can you afford a long FIR implementation? And how are the precision constraints formulated? Do you need an exact match, point-wise matches or does an LMS match suffice (i.e. do you need to minimize the L1 norm, the L2 norm or the L infinite norm)? *IF* you can afford a long (i.e. many coefficients) FIR implementation and *IF* it is sufficient to minimize the error in the L2 norm, you ought to be able to use some sort of software package to design your filter. Just my 2c... Rune
Hi Rune,

Thanks for the reply.
Yes, at the beginning it is an IIR filter, but it is not mandatory that
this sort of digital filter should be used, but it is preferred. I'm
looking for an exact match, if possible. I've read that filtering in
the frequency domain is a sort of efficiency increase for long FIR
filtering. Could you plesae enlighten on that?

JaaC

Jaime A. Aranguren C., SanJaaC Electronics wrote:
> Hi Rune, > > Thanks for the reply. > Yes, at the beginning it is an IIR filter, but it is not mandatory
that
> this sort of digital filter should be used, but it is preferred. I'm > looking for an exact match, if possible. I've read that filtering in > the frequency domain is a sort of efficiency increase for long FIR > filtering. Could you plesae enlighten on that? > > JaaC
Sorry, don't think I can help much. I have found what little I know about frequency domain filtering in Rick Lyons' book. I think you'll be better off consulting the book directly instead of having the material filtered and obfuscated by my shortcuts and misunderstandings. With some luck, Rick himself might even be lurking here... Rune
On 9 Jan 2005 09:50:44 -0800, "Jaime A. Aranguren C., SanJaaC
Electronics" <jaime.aranguren@ieee.org> wrote:

>>For my application I need to design a filter which CLOSELY matches the >>frequency response, both in amplitude and phase, of a provided analog >>prototype filter. This is an old problem, I know...
http://melvyl.cdlib.org:80/F/H3UA418793QIB1YM87QRR8UNISPBXBMUVBRP133E6N87Q8L3IY-12897?func=full-set-set&set_number=005561&set_entry=000001&format=999
in article 1105293044.208388.31870@c13g2000cwb.googlegroups.com, Jaime A.
Aranguren C., SanJaaC Electronics at jaime.aranguren@ieee.org wrote on
01/09/2005 12:50:

> For my application I need to design a filter which CLOSELY matches the > frequency response, both in amplitude and phase, of a provided analog > prototype filter. This is an old problem, I know... > > I've tried bilinear transform and impulse invariant methods, as > provided by MATLAB's functions. They are not enough, I need better > performance.
what is your sample rate and how high are the frequencies of interest relative to Nyquist? can your digital filter have a much higher order than the analog filter? the bilinear transform only substitutes a first order term of s = Fs * ln(z) into the analog H(s). have you tried more terms? it will increase the order of H(z). (i know some folks said that this does not guarantee stability but that does not seem right to me.) -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
robert bristow-johnson wrote:

> in article 1105293044.208388.31870@c13g2000cwb.googlegroups.com, Jaime A. > Aranguren C., SanJaaC Electronics at jaime.aranguren@ieee.org wrote on > 01/09/2005 12:50: > > >>For my application I need to design a filter which CLOSELY matches the >>frequency response, both in amplitude and phase, of a provided analog >>prototype filter. This is an old problem, I know... >> >>I've tried bilinear transform and impulse invariant methods, as >>provided by MATLAB's functions. They are not enough, I need better >>performance. > > > what is your sample rate and how high are the frequencies of interest > relative to Nyquist? can your digital filter have a much higher order than > the analog filter? the bilinear transform only substitutes a first order > term of > > s = Fs * ln(z) > > into the analog H(s). have you tried more terms? it will increase the > order of H(z). (i know some folks said that this does not guarantee > stability but that does not seem right to me.) > >
Doing so wouldn't take into account any reconstruction effects from the usual zero-order hold DAC arrangement -- in fact, with a low sample rate the ZOH effect may be messing things up more than the z-domain approximation. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Hi Robert,

My sample rate is 240 Hz. The filters is some sort of band pass filter,
bell shaped. Frequencies of interest are from 0.05 Hz up to 40Hz, being
the maximum at 8.8 Hz.

Could you please give me some example on how to get a IIR filter
designed with more terms than what's proided by MATLAB's bilinear
function? This one gives me a 6th order IIR filter, implemented as
three Second Order Sections.

TIA.

JaaC

Thanks, Rune.

I'll have a look at his UDSP, section 10.10 "Fast FIR filtering using
the FFT" seems to be the place.

Regards,

JaaC

"robert bristow-johnson" <rbj@audioimagination.com> wrote in message
news:BE071B4A.3B6B%rbj@audioimagination.com...
> in article 1105293044.208388.31870@c13g2000cwb.googlegroups.com, Jaime A. > Aranguren C., SanJaaC Electronics at jaime.aranguren@ieee.org wrote on > 01/09/2005 12:50: > > > For my application I need to design a filter which CLOSELY matches the > > frequency response, both in amplitude and phase, of a provided analog > > prototype filter. This is an old problem, I know... > > > > I've tried bilinear transform and impulse invariant methods, as > > provided by MATLAB's functions. They are not enough, I need better > > performance. > > what is your sample rate and how high are the frequencies of interest > relative to Nyquist? can your digital filter have a much higher order than > the analog filter? the bilinear transform only substitutes a first order > term of > > s = Fs * ln(z) > > into the analog H(s). have you tried more terms? it will increase the > order of H(z). (i know some folks said that this does not guarantee > stability but that does not seem right to me.) > > r b-j rbj@audioimagination.com
One issue that r b-j is perhaps hinting at is that a digital filter designed with the bilinear transform is an excellent match to the analog prototype until you get "near" the Nyquist rate. I use "near" in quotes because the exact definition depends on how much error you can tolerate. One solution to this is to upsample your input data to a higher sample rate, which will put your filter's cut-off frequencies farther from the Nyquist. I don't know if this is practical for your problem, but with a significantly large enough amount of computing power, it seems you should be able to find a high enough sample rate to make the match "close enough". Another question for r b-j and others, I've heard of using an alternate definition for the bilinear transform in order to alter the mapping between the s and z domains but don't know much about this topic. For example, the standard BLT yields a good match up until maybe about half Nyquist and then it diverges, reaching the analog value at infinity at Nyquist. Could one use an alternate mapping that for example made the digital filter match well up to say .95*Nyquist and then diverge _really_ fast? Or maybe even more unusual to have a mapping where the bulk of the error was in the low frequency terms? How does one go about this?