# Chosing polyphase interpolation coefficients

I'm writing code for a 3x polyphase interpolator using a total of 9 coefficients. This is organized as 3 parallel FIR branches with 3-taps each that are summed at the 3x sampling rate.

The problem I have is the impulse response looks correct (I get my 9 filter coefficients as output) but when I use a real signal that is a smooth Gaussian area near the peak has 'digital noise'. I have confirmed by debug printouts the code is calculating what I want it to. It seems the combination of the input signal & the coefficients really does generate a non-monotonic output.

as reference I used the info at this site: [polyphase filter faq][1]

What am I missing? How do I avoid this? My coefficients are: [4066 6261 8133 9391 9834 9391 8133 6261 4066]

The inputs sample rate is 100Mh and the output is 300Mh. I choose the filter coefficients to have a bandwidth < 50Mh.

Adding followup information. I looked at the step response and it oscillated every 3 output samples. The output to a step should be the sum of the coefficients in a branch. I noticed the 3 coefficients of the 3 branches did not all add to the same value. By deduction, I changed the coefficient 6261 to 5878. Now the coefficients are: coeff = [4066 5878 8133 9391 9834 9391 8133 5878 4066] and the response is much better.

See new plot:

Thanks, Brian

• Welcome to DSP.SE! It certainly does look wrong. If the input is a Gaussian, then the output should be smooth. To me it looks like you're outputting the data in the wrong order (1,3,2) instead of (1,2,3). But if that were the case, your impulse response would also be wrong. – Peter K. Sep 3 '15 at 15:53
• Definitely looks better. I'd suggest putting your edit in as an answer, and selecting that as the answer (if you're happy that it is). – Peter K. Sep 3 '15 at 19:51