Interpolated FIR filter group delay

Started by sunnyyates 6 years ago6 replieslatest reply 6 years ago460 views

I'm trying to design a digital low pass filter with a narrow transition band. My sampling rate is 25 kHz, the cut off frequency is 60 Hz & the transition band width is 4 Hz. I'm looking for about 40 dB attenuation in the stop band & 0.1 dB in the pass band.

I looked at the traditional FIR methodology using the Windowed Sinc filter but the number of taps required to get such a transition band is too high. Going by the reference here, we get a value of 25000 which is 1 second in terms of time.

As an alternative, I looked into IFIR filters. While the model filter results in a decrease in the filter length by a value that's equal to the interpolation factor, the interpolated filter formed by inserting zeros into the model filter's kernel increases the length to almost the same as what you'd get with a conventional FIR filter.

So, my question is, does the IFIR methodology make the filter more efficient from a group delay point of view? Is the only benefit here the fact that more zeros implies fewer multiplications & additions? I'm trying to achieve around 1 to 2 cycles of delay (in terms of time for a 50 Hz signal). Considering that the sampling rate is so high, shouldn't it be easier to achieve this? If not, what other methods could be used to obtain such a filter?

[ - ]
Reply by fred_harrisMay 19, 2018

I have written lots and lots of papers on how to design very narrow bandwidth filters.. Have two options IIR and FIR... in IIR you design filter bandwidth at 1/4 sample rate... heterodyne input signal to 1/4 sample rate, filter it and heterodyne back to baseband then a short filter to house cleaning filter to eliminate image at 1/2 sample

In FIR you lower sample rate with M-path polyphase M-to-1 down sample filter, design and implement desired filter at lower sample rate and then return sample rate back to original with M-path 1-to-M up sampling filter. 

If delay is important (small) use the IIR filter

see attached papers... I can supply matlab simulations of any of the options contact me at fjharris@eng.ucsd.edu

rate.sdr_2007_narrowband_IIR_filters.pdf,  narrowband IIR filters_2.pdfDSP_2017_3.pdf

also see material in my book... multirate signal processing

Have fun... these designs make you smile!


[ - ]
Reply by kazMay 19, 2018

I am not sure about IFIR but in your case I would try decimation to a low sampling rate then apply final shaping.

[ - ]
Reply by ahmedshaheinMay 19, 2018

Try the Matlab toolbox called MSDTOOLBOX. It is available as an open source on MathWorks

[ - ]
Reply by achesirMay 19, 2018

With a 25 KHz sampling rate, if you were to try do filter in one stage you are asking for a passband that is 1/2 of 1% of the Nyquist frequency!! Failure is guaranteed.

With a symmetric-tap FIR, you get constant group delay, but if attempted in one stage, your group delay will be measured in years.

Instead, use 3 IIR LPF filters in sequence:

1) Fs = 25 KHz   Fpass = 1000   Fstop = 2000   ripple = 0.01   atten = 80

...then decimate by 5

2) Fs =  5 KHz   Fpass =  200   Fstop =  400   ripple = 0.01   atten = 80

...then decimate by 5

3) Fs =  1 KHz   Fpass = 60-2   Fstop = 60+2   ripple = 0.1   atten = 40

...which is your real goal

With an IIR filter, group delay is nearly 0 for most of the frequency band, but will spike in your transition band. Even so, it should be within your limits.

[ - ]
Reply by sunnyyatesMay 19, 2018

This is interesting. I've never used IIR filters before & am wondering how there's no group delay at all? Does this mean, the output signal will have zero lag with respect to the input signal?

Also, I need linear phase until at least the cutoff frequency. What happens beyond that isn't of much concern. Is this possible with the idea you mentioned?

[ - ]
Reply by probbieMay 19, 2018

As regards the IFIR, it will perform no better than a conventional FIR in terms of group delay, but it could consume less DSP cycles - that is really its only advantage. Bear in mind that IFIR can only be performed with fixed-point maths, otherwise you will get wild oscilaltions.