I am acquiring data through an oscilloscope, which I am then filtering. I am doing all of this in Python.

I need a bandpass filter with stop bands from 0 to .4MHz, and 4MHz and up. My pass band needs to be in the remaining region and would ideally be as large as possible.

I checked out a text from the library to help design a filter. The first filter I built was a Butterworth filter. However, the time domain response was awful for any decent frequency range, as I need an order 5+ filter.

I am now using the Remez (in scipy.signal) algorithm to generate my Transfer function coefficients. It looks All right, but I'm wondering if there is a better filtering option for flat time domain a fast frequency response?

  • 1
    $\begingroup$ Do you have a requirement to use FIR or IIR filters? $\endgroup$
    – Phonon
    Jul 1, 2014 at 1:37
  • $\begingroup$ There is always a trade-off between ringing in the time domain and sharp transitions in the frequency domain. You need to be more specific in you design specification. Why is ringing bad for your data? How much ringing is allowed? What is the minimum passband width? The impulse responses of filters designed by the Remez algorithm usually show quite some time-domain ringing too. $\endgroup$
    – Matt L.
    Jul 1, 2014 at 7:38
  • $\begingroup$ "However, the time domain response was awful for any decent frequency range" So you want minimal overshoot? The Bessel filter has low overshoot. It isn't zero overshoot, but it's pretty good. $\endgroup$
    – endolith
    Jul 1, 2014 at 19:30

1 Answer 1


It would appear by your question that you are new to filter design, which makes it difficult to answer questions about your filtering needs, so you might want to try this link. http://www.iowahills.com/

This site has free FIR and IIR filter design programs that make it point and click simple to design and compare filters. The programs make it easy to see the how the various filter parameters such as pole count, tap count, response type (Butterworth, Chebyshev, Adjustable Gauss, etc.), linear phase, minimum phase, etc., affect a filter's response in both the time and frequency domain.

These programs can't replace Python, (they only design filters and filter data on the program's test bench), but they will make it quite easy to choose a filter design to use within Python.

  • $\begingroup$ I am new, and design programs such as you have mentioned seem like they will be more help than an answer of the type I was previously hoping for. Thank you! $\endgroup$
    – Pabetism
    Jul 1, 2014 at 20:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.