Okay, I'll risk "exceeding my daily message limit". If the
administrators think it is inappropriate, dealing with that is at
their discretion.

Here is another proof that the alias images in the spectrum are caused
by the sampling/upsampling, not the interpolation:

Let's replace linear interpolation with simply stuffing zeros between
samples. So that means, we upsample the signal without applying
interpolation or filtering. Let's try this on an ~50 Hz sine wave
sampled at 44100/88 ~= 501 Hz, upsampled to 44.1 kHz by stuffing 87
zeros between each sample.

The resulting waveform looks like individual impulses, spaced 88 samples apart:
http://morpheus.spectralhead.com/img/sine_upsampled_waveform.png

Here is the spectrum:
http://morpheus.spectralhead.com/img/sine_upsampled_spectrum.png

We can see the usual alias frequencies at 450 Hz, 550 Hz, 950 Hz, 1050
Hz, 1450 Hz, 1550 Hz, 1950 Hz, 2050 Hz, ... This is because the
upsampling causes the original spectrum to repeated infinite times,
causing these alias frequencies to appear in the resulting spectrum.

Therefore, it is NOT the interpolation that is causing these alias
images, but rather, the upsampling... More precisely, they're already
present in the original signal sampled at 500 Hz, the upsampling just
makes them visible. I used no interpolation at all, yet all this
aliasing appeared on the spectrum.

All the interpolation does, is it filters out some of this aliasing...
Since the impulse response of linear interpolation is a triangle,
applying linear interpolation is equivalent to convolving the
resulting upsampled signal with a triangular kernel filter. Since the
Fourier transform of a rectangle is a sinc function, and a triangular
kernel is equivalent to convolving two rectangular kernels, the
Fourier spectrum of a triangular kernel will look like a sinc^2
function.

But that's not what causes the aliasing... it's there already after
the upsampling, before you apply the interpolation/convolution. You
can take a discretized version of a continuous triangular kernel
sampled at the upsampled rate, and convolving the upsampled signal
with that kernel will be equivalent to linear interpolation. You do
not actually need a continuous time signal to be present, and the
aliasing/imaging is there already before doing the triangular
convolution at the upsampled rate.

Several authors discuss the equivalence of linear interpolation and
convolution with a triangular filter, examples:

1) "linear interpolation can be expressed as convolving the sampled
function with a triangle function"[1]

http://morpheus.spectralhead.com/img/linear_interpolation1.png

2) "The first-order hold [= linear interpolation] corresponds to an
impulse response for the reconstruction filter that is a triangle of
duration equal to twice the sampling period."[2]

http://morpheus.spectralhead.com/img/linear_interpolation2.png

3) http://morpheus.spectralhead.com/img/linear_interpolation3.png

[1] Oliver Kreylos, "Sampling Theory 101"
http://idav.ucdavis.edu/~okreylos/PhDStudies/Winter2000/SamplingTheory.html

[2] Alan V. Oppenheim, "Signals and Systems", ch. 17. "Interpolation"
http://ocw.mit.edu/resources/res-6-007-signals-and-systems-spring-2011/lecture-notes/MITRES_6_007S11_lec17.pdf

[3] Ruye Wang, "Sampling Theorem", "Reconstruction of Signal by Interpolation"
http://fourier.eng.hmc.edu/e101/lectures/Sampling_theorem/node3.html

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

Reply via email to