# Gaussian FIR filter with no multipliers?

What is the simplest way to implement a Gaussian FIR filter with unity gain coefficients and no multipliers?

Note: A Gaussian FIR filter is an FIR filter with an impulse response that is a Gaussian function. By "unity-gain coefficients" I mean all coefficients in the filter structure are 1.

• i wonder where i can pick up a Gaussian filter? maybe at the same store i can get one of them Kalman filters. i heard them Kalman filters are very good. – robert bristow-johnson Jun 13 '16 at 6:58
• Some interesting features of Gaussian filters: they have the minimum rise and fall time with no overshoot to a step function, and have the lowest possible group delay for a given bandwidth. One application is in GMSK modulation by using a properly scaled Gaussian filter on the frequency control word of an NCO (or the control voltage to a VCO), with each symbol into the filter represented as an impulse. If the filter is exactly 1 symbol period long, this would implement full response signally, or if less this would implement partial response signalling (as is done in GSM and UHF SATCOM). – Dan Boschen Jun 13 '16 at 12:21
• As much as I love the dsp-puzzle subject, I feel that the way this one is set here, although challenging, is a bit contradicting (or there is something I am not getting). On one hand, a Gaussian time domain profile is specified, on the other, the accepted answer points to something like h=[1,1]. A rect pulse has a sinc freq spect and the average of a large number of them COULD approximate a Gaussian. But that would be a Gaussian profile in frequency domain. Where am I going wrong? – A_A Jun 13 '16 at 12:59
• Thanks for the response, I stand corrected. (It was not a comment on the accepted answer by the way, more a request for clarification) – A_A Jun 13 '16 at 13:42
• It is a good comment- I was hoping my clarification would carry the spoiler format, but it doesn't so I deleted my response which was too revealing. I will just say that a Gaussian profile in the time domain is also a Gaussian profile in the frequency domain. – Dan Boschen Jun 13 '16 at 13:49

This is an approximation, but you can make it as good as you like.

Just use a cascade of several filters with rectangular impulse responses. In the simplest case this would be a two-tap filter. This works because of the central limit theorem. However, you will need to scale, because otherwise your resulting impulse response may become too large. The scaling could be done by bit-shifting.

• How do you apply the CLT here? The entire procedure is deterministic. – MBaz Jun 13 '16 at 13:51
• @MBaz: No need for randomness here. What CLT says is that the pdf of an RV that is the sum of many independent RVs approaches a Gaussian. That pdf is just the convolution of the pdfs of the other independent RVs. So in other words, convolve many functions with each other and you'll end up with a Gaussian. – Matt L. Jun 13 '16 at 14:23
• Right, given that the sum of IID RV's approaches a Gaussian using the CLT, and given that the distribution for a sum of RV's is a convolution of their individual PDF's; since the resulting impulse response for the cascade of FIR's is the convolution of their individual impulse responses, we can deduce that the impulse response for the cascade of FIR's with identical impulse responses will also approach a Gaussian. – Dan Boschen Jun 13 '16 at 14:55
• @DanBoschen Yeah, what I missed is that the impulse response is interpreted as a (scaled) pdf. – MBaz Jun 13 '16 at 15:01
• It's a great bridge between two otherwise different disciplines... The math you can do on discrete pdf's applies to what you can do with coefficients of FIR filters...in the end it is just the math that is equivalent but can lead to some good insights such as this! – Dan Boschen Jun 13 '16 at 15:07

Not quite as elegant as Matt L.'s answer, but also seems to work.

Instead of putting one-coefficient FIR filters in series, put them in parallel, but now make them of different lengths and at different delays, and then sum all the filter outputs together. As with Matt's answer, this will not be scaled correctly. The original Gaussian will have to be scaled and made integer values (which is where the error occurs). Check this url for the error.

• Yes this also works, good thinking! – Dan Boschen Jun 13 '16 at 13:50