Good Afternoon Everybody.
I am developing filters for EEG signals in these days. During the Develop I find some problems:
The filter is FIR (band-pass using a convolution of low-pass filter and high-pass filter) they are 5 filters in different bands and the order is high and the coefficients are very small. I have coefficients of range from 3.8145e-10 to 0.2279, and the filter orders are:
Alpha: 133 Beta: 117 Theta: 124 Delta: 11 (IIR filter) Gamma: 125
The lines codes (only of the filters) are these:
%%Filtro for alpha, beta and gamma signals is the same [n,fo,ao,peso]=firpmord([Fapp2 Fass2],[1 0],[0.005 0.005],2); ba=firpm(n,fo,ao,peso); [n1,fo,ao,peso]=firpmord([Fass1 Fapp1],[0 1],[0.005 0.005],2); b1a=firpm(n1,fo,ao,peso); ba=conv(ba,b1a); Na=length(ba); %%Filtro señal theta [n,fo,ao,peso]=firpmord([Ftpp2 Ftss2],[1 0],[0.005 0.1],2); bt=firpm(n,fo,ao,peso); [n1,fo,ao,peso]=firpmord([Ftss1 Ftpp1],[0 1],[0.1 0.005],2); b1t=firpm(n1,fo,ao,peso); bt=conv(bt,b1t); Nt=length(bt); %%Filtro señal delta [n,Wn]=buttord(Fdpp2, Fdss2,0.005,60); [bd,ad]=butter(n,Wn); [n1,Wn]=buttord(Fdss1,Fdpp1,0.005,60); [b1d,a1d]=butter(n1,Wn,'high'); bd=conv(bd,b1d); ad=conv(ad,a1d); Nd=length(bd);Nd1=length(ad);
This part is only the pre-processing part but the coefficients are very small. the Fs is 250Hz and the delay group will be 0.5320 seconds. If I change IIR filter to FIR the order is near 200 and the delay group will be major (I tried that using only the band-pass filter without the convolution but the order was major than the actual orders). my questions are:
Are there methods for reduce order of the filter without lose quality as the ripple or attenuation?
If I change FIR by IIR, could I lose or distort information?
Is normal that the coefficients be very small or how could I convert them in bigger numbers (near to order of 0.01 or 0.001 as minimum)?
Also, I tried to use only High-pass filter and Notch Filter then to do the features extractions but I have similar problem with the delay group too because I want to implement in a FPGA or DSP (for real time process) but the delay group is high compare with anothers works like my work.
Sorry, my english is not good. Thank you so much for your time.