DSPRelated.com
Forums

designing an arbitrary 10 tap IIR filter

Started by sammyd June 11, 2004
try me digital filter design tool:
http://www.winfilter.20m.com

regards,
Adrian

sammyd wrote:

> Hi, > i would like to design a 10 tap IIR butterworth filter with a given > cutoff. What tools are available to help me realise this in C. > > for example for RBJ's biquad filters there are equations on how to > update your coefficients when your cutoff or sr changes. i'm looking to > do something similar but on a higher order filter. > > thanks for any suggestions or pointers ... > > regards, > sam >
On Sat, 12 Jun 2004 09:35:13 +0000, Tim Wescott wrote:

> sammyd wrote: > >> Hi, >> i would like to design a 10 tap IIR butterworth filter with a given >> cutoff. What tools are available to help me realise this in C. >> >> for example for RBJ's biquad filters there are equations on how to >> update your coefficients when your cutoff or sr changes. i'm looking to >> do something similar but on a higher order filter. >> >> thanks for any suggestions or pointers ... >> >> regards, >> sam >> > > I hope you mean that you want to implement a 10th order IIR filter, not > that you're going to try and implement a 10th order polynomial directly! > > Direct polynomial implementations get very bad very quickly -- the > precision required goes up exponentially with the number of poles, so > even if your poles are fairly distant from z = 1.0 you still get into > numeric trouble fairly quickly. > > It's much better to implement your filter as a cascade of 1st- and > 2nd-order filters.
-- Not exponentially. It goes up linearly. Have an 8 bit filter that is two stage, and say a precision of 16 bits, then a 3 stage needs 24 and 4 stage needs 32 and so on. |
On Sat, 12 Jun 2004 09:35:13 +0000, Tim Wescott wrote:

> sammyd wrote: > >> Hi, >> i would like to design a 10 tap IIR butterworth filter with a given >> cutoff. What tools are available to help me realise this in C. >> >> for example for RBJ's biquad filters there are equations on how to >> update your coefficients when your cutoff or sr changes. i'm looking to >> do something similar but on a higher order filter. >> >> thanks for any suggestions or pointers ... >> >> regards, >> sam >> > > I hope you mean that you want to implement a 10th order IIR filter, not > that you're going to try and implement a 10th order polynomial directly! > > Direct polynomial implementations get very bad very quickly -- the > precision required goes up exponentially with the number of poles, so > even if your poles are fairly distant from z = 1.0 you still get into > numeric trouble fairly quickly. > > It's much better to implement your filter as a cascade of 1st- and > 2nd-order filters.
-- Not exponentially. It goes up linearly. Have an 8 bit filter that is two stage, and say a precision of 16 bits, then a 3 stage needs 24 and 4 stage needs 32 and so on. |
Robin wrote:

> It goes up linearly. > > Have an 8 bit filter that is two stage, and say a precision of > 16 bits, then a 3 stage needs 24 and 4 stage needs 32 and so on.
I'd say that bits are a lograthmic measure for resolution. Therefore, a linear increase in the number of bits would imply exponential increase in resolution. Regards, Andor
Robin Clark wrote:
> On Sat, 12 Jun 2004 09:35:13 +0000, Tim Wescott wrote: > > >>sammyd wrote: >> >> >>>Hi, >>>i would like to design a 10 tap IIR butterworth filter with a given >>>cutoff. What tools are available to help me realise this in C. >>> >>>for example for RBJ's biquad filters there are equations on how to >>>update your coefficients when your cutoff or sr changes. i'm looking to >>>do something similar but on a higher order filter. >>> >>>thanks for any suggestions or pointers ... >>> >>>regards, >>>sam >>> >> >>I hope you mean that you want to implement a 10th order IIR filter, not >>that you're going to try and implement a 10th order polynomial directly! >> >>Direct polynomial implementations get very bad very quickly -- the >>precision required goes up exponentially with the number of poles, so >>even if your poles are fairly distant from z = 1.0 you still get into >>numeric trouble fairly quickly. >> >>It's much better to implement your filter as a cascade of 1st- and >>2nd-order filters. > >
> Not exponentially. > It goes up linearly. > Have an 8 bit filter that is two stage, and say a precision of > 16 bits, then a 3 stage needs 24 and 4 stage needs 32 and so on. Linear in bits is exponential in precision. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������