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