DSPRelated.com
Forums

filter design

Started by laki August 30, 2005
Hi,

Suppose I want to design a digital filter for some application. There 
are some options to do this:
- weighted least squares design
- minimax design
- filter design based on 'windows' (fir1, fir2)
- equiripple design (remez)

Which method is the most used (in education, in industry)? Which method 
results in a filter satisfying the filter requirements the best?

Thanks,
Laki
laki wrote:
> Hi, > > Suppose I want to design a digital filter for some application. There > are some options to do this: > - weighted least squares design > - minimax design > - filter design based on 'windows' (fir1, fir2) > - equiripple design (remez) > > Which method is the most used (in education, in industry)?
Equiripple. (How does that differ from minimax?)
> Which method > results in a filter satisfying the filter requirements the best?
That depends on the requirement. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
laki wrote:
> Hi, > > Suppose I want to design a digital filter for some application. There > are some options to do this: > - weighted least squares design > - minimax design > - filter design based on 'windows' (fir1, fir2) > - equiripple design (remez) > > Which method is the most used (in education, in industry)? Which method > results in a filter satisfying the filter requirements the best?
FIR filter design by the window methods is probably the most widely used method during general DSP classes and in education. The method is relatively simple but does not necessarily provide "good" filters. It is not obvious how to optimize the number of coefficients, and it is not easy to control the gain, attenuation and ripple. The Parks-McClellan algorithm seems to be better suited to solve such problems, but is not all that obvious to understand or implement. I am not sure how good the matlab implementation (REMEZ, FIRPM) is. For IIR filter design, there is the design by analogue prototype, which has some historical significance and is relatively straight- forward, although it requires a lot of algebra to get through. The main problem with this method is that it is difficult to find good recipes for implementation. Most recent DSP texts only sketches the outlines of the method, leaving out some of the crucial details. As for matlab, I am not impressed by the BUTTER, CHEB1 and CHEB2 functions in the Signal Processing Toolbox. It is well known that IIR filters should be implemented as a cascade of 1st and 2nd order primitives. As far as I can tell, the matlab functions do not export the filters on that form. I did find a method by Steiglitz for optimizing filters with respect to a frequency-domain response function, published in the early 1970ies. The main difficulty there, was that the methods relied on a nonlinear conjugate gradient optimization method. Apart from that, the paper seemed to have all the difficult detailed worked out. So back to answering your question: The simple, but perhaps obsolete, methods are used in education because they are easily understood and can be implemented in terms of closed-form formulae. These methods are "best" with respect to gained results for invested effort. In industry, one is willing to spend $$$ or time getting more sophisticated desing methods, based on numerical optimization schemes. These filters might be able to do the job in fewer flops than the filters designed by the "simple" methods. So it is basically up to you, how much time or $$$ are you willing to spend to get your hands on the sophisticated methods, and whether the added cost is worth the perhaps small improvement. Rune
Rune Allnor wrote:
> laki wrote: > >>Hi, >> >>Suppose I want to design a digital filter for some application. There >>are some options to do this: >>- weighted least squares design >>- minimax design >>- filter design based on 'windows' (fir1, fir2) >>- equiripple design (remez) >> >>Which method is the most used (in education, in industry)? Which method >>results in a filter satisfying the filter requirements the best? > > > FIR filter design by the window methods is probably the most widely > used method during general DSP classes and in education. The method > is relatively simple but does not necessarily provide "good" filters. > It is not obvious how to optimize the number of coefficients, and > it is not easy to control the gain, attenuation and ripple. > > The Parks-McClellan algorithm seems to be better suited to solve such > problems, but is not all that obvious to understand or implement. > I am not sure how good the matlab implementation (REMEZ, FIRPM) is. > > For IIR filter design, there is the design by analogue prototype, > which has some historical significance and is relatively straight- > forward, although it requires a lot of algebra to get through. > The main problem with this method is that it is difficult to find > good recipes for implementation. Most recent DSP texts only sketches > the outlines of the method, leaving out some of the crucial details. > As for matlab, I am not impressed by the BUTTER, CHEB1 and CHEB2 > functions in the Signal Processing Toolbox. It is well known that > IIR filters should be implemented as a cascade of 1st and 2nd order > primitives. As far as I can tell, the matlab functions do not > export the filters on that form. > > I did find a method by Steiglitz for optimizing filters with respect > to a frequency-domain response function, published in the early > 1970ies. The main difficulty there, was that the methods relied on > a nonlinear conjugate gradient optimization method. Apart from that, > the paper seemed to have all the difficult detailed worked out. > > So back to answering your question: The simple, but perhaps obsolete, > methods are used in education because they are easily understood > and can be implemented in terms of closed-form formulae. These > methods are "best" with respect to gained results for invested > effort. > > In industry, one is willing to spend $$$ or time getting more > sophisticated desing methods, based on numerical optimization > schemes. These filters might be able to do the job in fewer flops > than the filters designed by the "simple" methods. > > So it is basically up to you, how much time or $$$ are you willing > to spend to get your hands on the sophisticated methods, and whether > the added cost is worth the perhaps small improvement. > > Rune >
Thanks, Rune
Rune Allnor wrote:

   ...

> So back to answering your question: The simple, but perhaps obsolete, > methods are used in education because they are easily understood > and can be implemented in terms of closed-form formulae. These > methods are "best" with respect to gained results for invested > effort.
I think there's more to it than that for both professionalism and education. Seeing first hand how a set of reasonable coefficients is generated deepens understanding. It stands to reason that tweaking the coefficients just a bit can improve the result; we leave that to a computer. (The same is true of a truncated power series for log, arctan, or whatever.) If one is a professional fire maker, it is also good to know (or at least dimly remember) alternate ways to make fire, just in case the Bic won't flick. ... Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������