On 8/16/15 4:09 AM, Sham Beam wrote:
Hi,

Is it possible to use a filter to compensate for high frequency signal loss due to interpolation? For example linear or hermite interpolation.

Are there any papers that detail what such a filter might look like?


besides the well-known sinc^2 rolloff that comes with linear interpolation, this paper discussed interpolation using higher-order B-splines.

Udo Zölzer and Thomas Bolze, "Interpolation Algorithms: Theory and Application," http://www.aes.org/e-lib/browse.cfm?elib=6334 . i thought i had a copy of it, Duane Wise and i referenced the paper in our 2-decade-old paper about different polynomial interpolation effects and which were better for what. (you can have a .pdf of that paper if you want.)

but Zölzer and Bolze (they might be hanging out on this list, i was pleasantly surprized to see JOS post here recently) *do* discuss pre-compensation of high-frequency rolloff due to interpolation polynomials that cause such rolloff. you just design a filter (using MATLAB or whatever) that has magnitude response that is, in the frequency band of interest, approximately the reciprocal of the rolloff effect from the interpolation.

Zölzer and Bolze suggested Nth-order B-spline without really justifying why that is better than other polynomial kernels such as Lagrange or Hermite. the Nth-order B-spline (at least how it was shown in their paper), is what you get when you convolve N unit-rectangular functions with each other (or N zero-order holds). the frequency response of a Nth-order B-spline is sinc^(N+1). this puts really deep and wide notches at integer multiples of the original sampling frequency (other than the integer 0) which is where all those images are that you want to kill. linear interpolation is all of a 1st-order Lagrange, a 1st-order Hermite, and a 1st-order B-spline (and the ZOH or "drop-sample" interpolation is a 0th-order realization of those three).

an Nth-order polynomial interpolator will have, somewhere in the frequency response, a H(f) = (sinc(f/Fs))^(N+1) in there, but if it's not the simple B-spline, there will be lower order terms of sinc() that will add to (contaminate) the highest order sinc^(N+1) and make those notches less wide. any other polynomial interpolation (at higher order than 1), will have at least one sinc() term with lower order than N+1.

so the cool thing about interpolating with B-splines is that it kills the images (which become aliases when you resample) the most, but it also has wicked LPFing that needs to be compensated unless your sampling frequency is *much* higher than twice the bandwidth (oversampled big-time). but if you *are* experiencing that LPFing, as you have suspected, you can design a filter to undo that for much of the baseband. not all of it.

--

r b-j                  r...@audioimagination.com

"Imagination is more important than knowledge."



_______________________________________________
music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp

Reply via email to