My understanding of interpolation specific to resampling applications is limited to the concept of inserting zeros, then designing a filter to minimize distortion in the passband and reject the images the zero-insert creates (to desired performance levels), such as what is depicted in a simple interpolate by 4 zero-insert shown below (showing the resulting spectrum before filtering).

I am noting that in creating the filter, we are creating the high order polynomial used for interpolating the input samples. I then understand that with a Spline interpolation method (as a user, and perhaps naively as I haven't really dug deeply into the underlying mathematics) we are doing piecewise interpolations using limited polynomials (therefore low order filters) over a smaller span of the sequence, and in many cases due to decreased ripple this will provide better performance.

My question then is if such "adaptive" resampling filters have been designed either using Spline approaches directly, or otherwise piecewise similar in process to a spline, but in a fashion that is best suited for high rate FPGA processing with a FIR based interpolation filter (I say that to avoid the response "just do a spline", but perhaps that would actually result in the solution even in an FPGA FIR based interpolator...). Before digging into that further has anyone seen such an approach, is it common, or are there known pitfalls why this would be a BAD idea? Thanks for the thoughts and input!

• I try but don't get your idea. Could this be helpful for you dsp.stackexchange.com/questions/36250/… Mar 23, 2017 at 13:49
• @OlliNiemitalo Yes! That is exactly what I was looking for. That would be the correct answer I believe. Mar 23, 2017 at 13:59

Look up "Farrow filter". It's essential a set of piecewise polynomial interpolators for the coefficients of an even longer (better) FIR interpolation filter (and without the need for a huge polyphase table). IIRC, it can be implemented in a straightforward arithmetic hardware pipeline (thus is likely quite suitable for an FPGA).

• Super. I have heard of the Farrow Filter but never implemented one, nor connected it before with the idea of piece-wise polynomials and splines- but apparently it is exactly that. Thanks much @hotpaw2! I see from your description that it interpolates a desired long interpolation FIR, so efficient in that regard; I still wonder if there is merit to recomputing polynomial interpolations piece-wise through our actual function- more specific to how I believe the spline implementation works? Mar 23, 2017 at 3:20
• (Does such an adaptive approach already exist where the interpolation filter coefficients are repeatably recomputed based on current values in the sequence? As opposed to Farrow where we interpolate the longer more traditional interpolation filter?--- If I understand Farrow correctly) Mar 23, 2017 at 11:57
• Looks like @OlliNiemitalo answered my question in the comment above. Mar 23, 2017 at 13:59
• I actually need to read Olli's references in more detail before declaring the "correct" answer to see if it is the adaptive solution I was looking for (meaning coefficients changing as we move through the waveform we are interpolatng) .... that question may still be open. Mar 24, 2017 at 14:23

Adaptive usually implies time-varying, but one gets very far by doing just time-invariant convolution of a Dirac comb representation of the sampled signal and a continuous-time piece-wise polynomial impulse response. I wrote about that in what people call the pink elephant paper (dunno what they are on about) titled "Polynomial Interpolators for High-Quality Resampling of Oversampled Audio".

• this too is interesting and I will dig into that but yes I did indeed mean time varying (computing the interpolator coefficients based on a smaller block of samples in vicinity of our current position within the sequence.) If I understood the link you referred in your other comment above, that appeared to be exactly what I was looking for, is it not? What you are describing here sounds exactly like the traditional zero insert followed by an interpolating filter, which is the polynomial you describe and the original functions with zeros inserted are the impulses- no? Mar 23, 2017 at 20:58
• The link in my comment is about the same kind of interpolation as my paper. If you compute the polynomial coefficients as a weighted sum of a number of samples in the vicinity of the current position, then you have a continuous-time linear time-invariant system. That is, until you sample the output of that system. Then you get aliasing, because the output of the system was not strictly band-limited, because it was piece-wise polynomial. Try to step out of the discrete time context when looking at this. The resampling ratios can be such that you rarely hit the original sample points. Mar 23, 2017 at 21:25
• Ok I will need to look at both closer, thanks for clarifying that Mar 23, 2017 at 21:29
• If the coefficients are changed not at the resolution of the samples but continuously depending on the current fractional position between samples, then if the coefficients are calculated by functions that are polynomials of the fractional position, then the whole thing simplifies to just a higher-degree polynomial spline. So it is better to design the higher-degree spline directly. Mar 27, 2017 at 12:02
• No I mean at the resolution of the samples but only within a few samples such as spline and then interpolate between those samples with a lower order polynomial rather than using a higher order polynomial at all. I haven't thought this through to say it is better just observed how much faster spline was for me in one recent interpolation I was doing versus my typical interpolation methods based on my description. Mar 27, 2017 at 12:43