The
sampling rate of a
digital signal can be easily be increased by an
integer multiple--say,
M--by adding
M-1 zeros between each
sample, then
low-pass filtering with a digital
cutoff frequency of π/
M and a gain of
M.
Derivation
Let
x(n) be the signal we wish to upsample (
interpolate), and define
y(k) = { x(k/M) , when m/M is an integer
{ 0 otherwise
Evaluating the
z-transform of
y(k),
Y(z) = Σky(k)*z-m
but y(m) is zero for all non-integer k/I, so
Y(z) = Σkx(k)*z-kM
= X(zM)
The DTFT of y is computed by evaluating Y(z) on the unit circle (z = ejΩ). Therefore,
Y(Ω) = X(ΩM).
Let's look at what's going on so far in the frequency domain. Suppose M=3, and X has the spectrum given below with maximum value 1.
|X(Ω)|
|
*1*
*** | ***
*** | ***
*** | ***
*** | ***
*** | ***
-|-------|-------+-------|-------|--> Ω
-π -π/2 0 π/2 π
|Y(Ω)|
|
* 1 *
* * *|* * *
* * * | * * *
* * * | * * *
* * * | * * *
* ** | ** *
|-------|-------+-------|-------|--> Ω
-π -π/2 0 π/2 π
Y(
Ω) contains
M spectral images of
X. What we want, however, is just the middle image, the one shown in bold in the figure above. This can clearly be extracted by low-pass filtering
Y to remove frequencies above π/
M, yielding:
|Y(Ω)|
|
1
*|*
* | *
* | *
* | *
* | *
|-------|-------+-------|-------|--> Ω
-π -π/2 0 π/2 π
One step remains: adjusting the
scaling of
y. It is convenient to compare
y(0) to
x(0):
y(0) = ∫ΩY(Ω) dΩ = (1/M) ∫ΩX(Ω) dΩ = x(0)/M
Thus, to keep y(k) scaled correctly, we must multiply it by M:
|Y(Ω)|
|
*- M
*|*
* | *
* | *
* | *
* | *
|-------|-------+-------|-------|--> Ω
-π -π/2 0 π/2 π