From: Joe on 1 Jun 2010 15:09 Hello, I have to implement a fixed-point low-pass digital filter which meets these requirements: Passband: 0-3700Hz Max ripple in passband: 1.5dB Stopband: 4000Hz and up Attenuation in stopband: minimum 40dB Sample frequency: 16000Hz As far as I can see, 3 sections of second-order IIR filters (elliptic filters) would do the job at a low cost: Number of Multipliers : 15 Number of Adders : 12 Number of States : 6 Multiplications per Input Sample : 15 Additions per Input Sample : 12 Which design/implementation would you go for?
From: Wayne King on 5 Jun 2010 06:27 "Joe" <Joe(a)NoSpammers.Com> wrote in message <4c055ae7$0$280$14726298(a)news.sunsite.dk>... > Hello, > > I have to implement a fixed-point low-pass digital filter which meets these > requirements: > > Passband: 0-3700Hz > Max ripple in passband: 1.5dB > Stopband: 4000Hz and up > Attenuation in stopband: minimum 40dB > Sample frequency: 16000Hz > > As far as I can see, 3 sections of second-order IIR filters (elliptic > filters) would do the job at a > low cost: > > Number of Multipliers : 15 > Number of Adders : 12 > Number of States : 6 > Multiplications per Input Sample : 15 > Additions per Input Sample : 12 > > > > Which design/implementation would you go for? > Hi Joe, if you use fdesign.lowpass, you can investigate a number of designs easily and see which ones satisfy your goals. % fdesign.lowpass has a number of specification strings h = fdesign.lowpass('Fp,Fst,Ap,Ast',3700,4000,1.5,40,16000); % design all options, FIR and IIR available to you. D = design(h,'all'); With the Filter Design Toolbox, I get 8 filters. Four IIR and four FIR designs. You can see the designs available with designmethods(h) From what I see the elliptic design has the lowest cost. Although the Chebyshev designs are also low cost. D1 = design(h,'ellip'); cost(D1) Number of Multipliers : 12 Number of Adders : 12 Number of States : 6 Multiplications per Input Sample : 12 Additions per Input Sample : 12 but I have not looked at the filter with D1.arithmetic = 'fixed'; and the appropriate fixed-point settings for you design. That should also be considered. Hope that helps, Wayne
|
Pages: 1 Prev: moving average code taking too long Next: undefined reference to `mlfScalar' |