MATLAB: How to do digital filter on this EEG data

eegfilter designlow passSignal Processing Toolbox

Hi! I recently recorded an EEG signal at 50K Hz sampling rate. The signal was band passed at 1-500Hz before it was digitalized. Now I wanted to do a digital fitlering to this data, which is a low pass filter to cut off bands with frequency larger than 10Hz. But I found it hard to achieve. My code was like this:
filter_n=20*sample_rate;
cutoff=10; %cutoff frequency
lowpass=fir1(filter_n,cutoff*2/sample_rate,'low');
y_lowpass=filter(lowpass,1,y);
But I found the low-passed signal still had much power in bands larger than 10Hz. Can someone help me out? Thanks!

Best Answer

Is your sample_rate 50K? If so, your filter is huge at the order of 1 million. This is way too long.
fir1 uses window method so you need to first pick a window. By default, a Hamming window is used. In addition, for your particular case, you have a 50 kHz sample rate and you are trying to low pass it to 10 Hz, this is not a very effective design. You may want to down sample it first.
if you want more attenuation, you may want to change the window to something like Chebyshev or Taylor. You could see your filter response by using
fvtool(lowpass,1)