I am trying to implement an interpolator for arbitrary sampling rate conversion of a one-dimensional signal (a fractional delay filter). I am aware of the fact that interpolation is in general a problem of low-pass filtering, and impulse response and passband widths are inversely proportionate (for the same kernel shape). However, I'm a bit uncertain of how precisely to apply this to fractional delay filters for different interpolation rates.

As I understand it, the frequency cutoff for the interpolation kernel should be at pi*low_rate/high_rate radians. But for what class of interpolation filters is this the case? E.g. for cubic B-spline interpolation (a non-Nyquist(1) piecewise polynomial, where Nyquist(1) means the filter's impulse response is delta when the source and target sampling rates are identical) for supersampling the kernel is based purely on the fractional position, and does not have any kind of provision for a cutoff, despite it being possible to compute an impulse response for the interpolator (which would seem to make the kernel frequency-dependent by the impulse response/passband duality mentioned previously). What about for other classes of interpolators such as linear (Nyquist(1), polynomial), sinc (Nyquist(1), non-polynomial) or Gaussian (non-Nyquist(1), non-polynomial)?

Additionally, non-Nyquist(1) interpolators can by converted to Nyquist(1) with the use of a fixed prefilter, e.g. as described in Variable Sample Rate Conversion Techniques for the Advanced Receiver. If in fact a given interpolator must have its impulse response dilated/contracted based on cutoff frequency, this means there are now two stages for these non-Nyquist(1) interpolators: the fixed prefilter and the potentially variable interpolation. At what stage(s) would the correction for cutoff frequency be applied in such a system, and would it follow the same formula stated above? I would have expected frequency correction to be necessary in the prefilter, but the paper doesn't seem to indicate the use of frequency-dependent prefilters with cubic B-spline interpolation despite that interpolator, as already stated, having no accommodation for cutoff frequency in the core algorithm.


Okay, I think I've learned a sufficient amount about interpolation theory to mostly answer this. Interpolation can be viewed in two equivalent ways. The most obvious is, for each point you are trying to compute the interpolated value for, the multiplication/sum of the source samples with the interpolation kernel centered on the interpolation point. Alternately, you could view the signal itself as the convolution of a set of "hidden" coefficients with the very same convolution kernel; in this case to interpolate between samples you multiply/sum each source coefficient by the point on that sample's corresponding interpolation kernel where the interpolation point falls. The former model is what you actually use for interpolating a signal, but the second makes obvious some things that are less clear in the first.

For upsampling, the equivalent low-pass filter cutoff will always be at the Nyquist rate of the source signal (at least for an ideal low-pass filter), meaning that the interpolation kernel will be fixed regardless of upsampling ratio. Furthermore, it means that the coefficients for a given interpolation point will always have fixed distance on the interpolation kernel curve, which is valuable information for optimization (e.g. if you quantize your frequency ratio to the same resolution as the kernel LUT, you can arrange the kernel LUT such that all coefficients for a single interpolated sample can be fetched at once, rather than requiring numerous array accesses per interpolated sample). And as a consequence of these, the prefilter (if needed) will be fixed as well.

For downsampling, the cutoff frequency must be the Nyquist rate for the target sampling rate, meaning the interpolation kernel as well as the prefilter must be dilated proportionately when applied to the source samples. I am not entirely certain, but I think this would mean interpolation methods whose kernels cannot be dilated (e.g. matrix-based B-spline interpolation) cannot directly be used for downsampling, in which case you would have to use such an algorithm to upsample to some integer multiple of the target frequency then low-pass filter and decimate (obviously simultaneous polyphase low-pass filter and decimate would be an optimization).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.