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(Ω) = (1/M) ΩX(Ω) = x(0)/M

Thus, to keep y(k) scaled correctly, we must multiply it by M:

```               |Y(Ω)|
|
*- M
*|*
* | *
*  |  *
*   |   *
*    |    *
|-------|-------+-------|-------|--> Ω
-π     -π/2      0      π/2      π
```

Log in or registerto write something here or to contact authors.