FIR filter shortening technique

Started by 4 years ago6 replieslatest reply 4 years ago238 views

Hello all,

It's my first participation here. Greetings !

I'm having an FIR filter with 1024 taps which represents a channel. I would like to find and equivalent 3 taps filter which gives a fair approximation for the magnitude response (I don't care much about the phase response). Does any one know a good and easy to learn technique to do so ? An accompanied matlab code will be much appreciated if available.

Thanks

[ - ]

Assuming your filter is a purely real filter (i.e. all the taps values are purely real numbers):

An N-tap FIR filter is a filter with (N-1) zeroes (the roots of the polynomial).

With 3 taps you have two choices: Either both zeroes are on the real axis, or the zeroes are complex-conjugate zeroes.

Plot the positions of the zeroes of the original 1024-tap filter in the Z-plane:

1) If the zeroes tend to cluster in a single pair of complex-conjugate locations, then in your 3-tap filter, place 1 zero in each of the two locations (once again, complex-conjugate).

2) If the zeroes tend to cluster in not more than two locations on the real axis, then in your 3-tap filter, place 1 zero in each of the two locations.

Either way, adjust the gain to a DC signal in your new filter to match the DC gain of the original 1024-tap filter.

If the zeroes of the original 1024-tap filter cluster in more than 2 locations, give up.

[ - ]

If you are only interested in an amplitude approximation, why not just use an equivalent IIR filter?

[ - ]

yeah, what John says.  because reducing 1024 degrees of freedom down to 3 degrees of freedom might not so good.  even if your FIR taps are not adjacent to each other and your delay line is longer than 3 samples.

[ - ]

To be clear you want to shorten a 1024 tap FIR down to 3 taps whilst preserving the magnitude response but are willing to compromise on the phase response?

Will you be able to cascade this 3 tap FIR filter with more 3 tap filters? Or were you thinking of just using one?

[ - ]

Hello,

1024 down to 3 may be a tall order.  However, depending on your real system requirements there may be something to do.

What are the requirements?  Sample rate, min/max of the Frequency range.  If the phase response doesn't matter then is it an audio application?  That matters because of some time artifacts that the FIR is bad at.

What is the required output sample rate?  Can the signal be decimated and the filtering done at a lower rate?  What is the application?

[ - ]