In this demonstration, we generate a sine wave sweep from low in the audio band to near the Nyquist Frequency, which is half the sample rate. You can view it in the upper chart.
Next, we upsample by a factor of two, by inserting a zero between each sample, and view the frequency response using various forms of interpolation in the lower chart:
- None is no interpolation—you can see the sine samples alternating with zero in the upper chart, and a complete lack of stop-band rejection in the frequency response. (Note that inserting zeros lowers the average signal level by half, or 6dB, as you can see in the lower chart.)
- Zero-order hold repeats the previous sample, in place of the zeros. This is the same as convolving the upsampled signal with filter coefficients { 1.0, 1.0 }.
- Linear replaces zero samples with the average of two adjacent original samples. This is the same as convolving the upsampled signal with { 0.5, 1.0, 0.5 }.
- Sinc 1 uses coefficients generated from a Kaiser-windowed sinc set to 0.5, or “half-band”. Half-band filters have the characteristic that every other coefficient is zero, making them much more efficient to implement, but at the expensive of poor aliasing characteristics near the Nyquist frequency. They are typically used in cases where subsequent steps, such as in multi-rate conversion, will clean up any response problems. This one uses 31 coefficients, 15 of which are zero and can be eliminated.
- Sinc 2 is a Kaiser-windowed sinc with a lower cutoff setting to minimize aliasing (also 31 coefficients).
- Sinc 3 is similar, but has better filter characteristics, due to using more coefficients (71).
Awesome website! Thanks for the interesting applets and explainers.