Sampling Theorem

A function f(t) in (L^2)(ℝ) is bandlimited if the support of its Fourier transform lies in [-Ω,Ω].  That is, the Fourier transform (OverHat[f])(ξ) equals zero for frequencies \[LeftBracketingBar]ξ\[RightBracketingBar]>Ω.

A fundamental result in Fourier analysis is the amazing Shannon sampling theorem:  If f(t) is bandlimited such that (OverHat[f])(ξ)=0 for all \[LeftBracketingBar]ξ\[RightBracketingBar]>Ω, then 

f(t) = (∑_(k=-∞)^∞)f((k/(2Ω)))sinc(2Ωt-k), 

with both pointwise and (L^2) convergence on ℝ.  This is wonderful because it tells us exactly how often to sample (every 1/(2Ω) in time) in order to have enough information to reconstruct the entire signal.

*Note that the textbook defines sinc(x)=sin(Pi x)/(Pi x) but Mathematica defines it to be sinc(x)=sin(x)/x, so be aware of the scaling factor difference.*

Take the function shown below to try out the sampling idea.  First we need to determine Ω for this signal (determine the largest frequency).

f[t_]:=(4 Pi t Cos[4 Pi t]-Sin[4 Pi t])/(2 Pi^2 t^2)
Plot[f[t],{t,-10,10},PlotRange->All]
fhat=FourierTransform[f[t],t,ξ,FourierParameters->{0,-2Pi}]
Plot[Im[fhat],{ξ,-3,3}]

So we have Ω=2 for this signal.

Next we find partial sums of the series in the Shannon sampling theorem. Note that f(0)=0, so we can skip the k=0 term.

Clear[shannon]
Manipulate[
Omega=2;shannon=Sum[f[k/(2Omega)] Sinc[(2Omega t-k )Pi],{k,-Kmax,-1}]+Sum[f[k /(2Omega)] Sinc[(2Omega t-k) Pi],{k,1,Kmax}];
Plot[{f[t],shannon},{t,-10,10},PlotRange->All,PlotPoints->500],{Kmax,1,40,1}]

Now let’s try sampling with the value of Ω set to double the true bandwidth (oversampling) and then half the true bandwidth (undersampling).  How does this effect the reconstruction and the number of samples one would end up storing over a fixed time?  In "real life," a digital signal like a telephone conversation is not given by a function but is transmitted as a finite number of samples, and one would like to know how often the analog signal should be sampled in order to reproduce it with little error.

Clear[shannon]
Manipulate[
Omega=2m;shannon=Sum[f[k/(2Omega)] Sinc[(2Omega t-k )Pi],{k,-Kmax,-1}]+Sum[f[k /(2Omega)] Sinc[(2Omega t-k) Pi],{k,1,Kmax}];
Plot[{f[t],shannon},{t,-10,10},PlotRange->All,PlotPoints->500],{m,1,4,1},{Kmax,1,40,1}]