Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!usc!apple!agate!ucbvax!pasteur!fir.Berkeley.EDU!maverick From: maverick@fir.Berkeley.EDU (Vance Maverick) Newsgroups: comp.dsp Subject: Re: Digital Filters Message-ID: <8926@pasteur.Berkeley.EDU> Date: 15 Nov 90 19:25:36 GMT References: <1990Nov15.121559.11290@watserv1.waterloo.edu> Sender: news@pasteur.Berkeley.EDU Reply-To: maverick@fir.Berkeley.EDU (Vance Maverick) Distribution: na Lines: 25 > > [in effect] How do I design an FIR filter? > This is an incredibly general question, the answers to which fill books. So the first answer is, look at Jackson, or Oppenheim and Schafer, or one of the other standard textbooks. Meanwhile, though, there's a fairly intuitive technique (if you believe in the Fourier transform) which allows you to design an FIR filter from a spectral specification. (1) Pick a filter length M. There are several considerations: -- longer filter -> better frequency resolution -- longer filter -> longer compute time, higher group delay. (2) Fill in the magnitude frequency response you want. This needs to be even (i.e. H(k) = H(M-k)) if you want real filter coefficients. (3) Take the inverse DFT of this frequency response. (For small enough M, the FFT isn't a big saving; just do the dumb DFT, using a real instead of a complex sinusoid, since you know the result will be real anyway.) Voila', the coefficients. (4) If you want to be slick, rotate the array to put small coefficients at the end.