I needed to review the Nyquist–Shannon sampling theorem. The coolest thing about Nyquist is that it expresses the sample-rate in terms of the function’s bandwidth and leads to a formula for the mathematically ideal interpolation algorithm.
What is sampling?
Sampling is nothing more than converting a signal into a numeric sequence. Shannon states:
If a function x(t) contains no frequencies higher than B hertz, it is completely determined by giving its ordinates at a series of points spaced 1/(2B) seconds apart.
This is really simple: A sufficient sample-rate is therefore \( \scriptstyle 2B \) samples/second, or anything larger. The two thresholds, \(\scriptstyle 2B \) and \(\scriptstyle f_s/2 \), are respectively called the Nyquist rate and Nyquist frequency.
I can’t understand something unless I explore with it. So, I defined the following code.
First we have to make the following definitions for a given sample-rate of \( f_s \):
- $$ \scriptstyle T \stackrel{\mathrm{def}}{=}\ 1/f_s $$ represents the interval between samples.
Say we have a simple sign wave modulated at a frequency of 1/8.
If we explore, we can get:
Aliasing
When the bandlimit is too high (or there is no bandlimit), the reconstruction exhibits imperfections known as aliasing.
Let \(X(f)\) be the Fourier transform of bandlimited function \(x(t)\):
$$ X(f) \stackrel{\mathrm{def}}{=}\ \int_{-\infty}^{\infty} x(t) \ e^{- i 2 \pi f t} \ {\rm d}t $$
and
$$ X(f) = 0 \quad \text{for all} |f| > B $$
The Poisson summation formula shows that the samples, x(nT), of function x(t) are sufficient to create a periodic summation of function X(f). The result is:
$$ X_s(f)\ \stackrel{\mathrm{def}}{=} \sum_{k=-\infty}^{\infty} X\left(f – k f_s\right) = \sum_{n=-\infty}^{\infty} \underbrace{T\cdot x(nT)}_{x[n]}\ e^{-i 2\pi n T f}, $$
This function is also known as the discrete-time Fourier transform.
Questions I’m after:
- How is it that the samples of several different sine waves can be identical, when at least one of them is at a frequency above half the sample rate?
You can see my source code here:
Leave a Reply