I have EEG data sampling rate is 250 Hz and I want to band pass this data in ( 0.5-3 Hz & 3-8 Hz & 8-13 Hz & 13-30 Hz & 30-40 Hz).

Currently, the data is in the frequency range of 0.5-40 Hz. (my implementation code is in Matlab, filter designer and EEGlab).

  1. Is the Butterworth filter good here?
  2. How do I apply Butterworth filter on this data?
  3. What should be the ideal filter order for get the better result?
  • $\begingroup$ Why did you pick the Butterworth filter? What was your goal? Generally, we don't use that filter. It comes from the analog world and doesn't translate nicely to digital signal processing. $\endgroup$ – Marcus Müller Nov 29 '18 at 11:27
  • $\begingroup$ @MarcusMüller I'm beginner, would you please help some advice? which is better? I use Matlab. $\endgroup$ – user355834 Nov 29 '18 at 11:30
  • $\begingroup$ @MarcusMüller my goal is extract some features from distinguished frequencies after apply filters. $\endgroup$ – user355834 Nov 29 '18 at 11:42
  • $\begingroup$ what kind of features? $\endgroup$ – Marcus Müller Nov 29 '18 at 11:59
  • $\begingroup$ point is, there's no universally "good" filter. What is good or bad is defined by what you want to do (It's the same with screws: you can't walk up to a handiman and ask whether the screw you're holding is a good screw. It depends on what you need to screw). So, maybe it'll help if you explain in your question what you want to do with the filtered signals, and why you want to do that! This is a place where a lot of experienced folks run around, and one of them probably has a wise recommendation for your specific use case. $\endgroup$ – Marcus Müller Nov 29 '18 at 12:24

Well, you're looking for a filter that can produce steep flanks, and suppresses power well over all the stopband. Sounds like a job for a DFT approx/window filter design with a Dolph-Chebychev window.

In matlab, you'd use the fir1 function to design your bandpasses with the chebwin giving you an appropriate windowing function.

You'll need to specify an order as first argument to fir1.

Since we're not really computationally constrained, let's use the same order for all band passes, as that will lead to constant group delay.

What you forgot to specify is how much overlap you can tolerate: no real filter in this world can cut off at e.g. 3 Hz sharply! You need to allow for some transition width. That transition width defines the order you need (the sharper, the higher the order.

Following this answer, assuming 0.1 passband ripple and 60 dB stopband attenuation, we'd get for a transition width of 0.1 Hz for the first filter an order of about 1000.

That's a large filter, and it will probably take a while for the fir1 method to complete, but because you have so little data to work with (in terms of computer speeds), that's going to be alright when applying the filter using the filter function.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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