Interpolating a DFT
Starting with a sampled spectrum
,
,
typically obtained from a DFT, we can interpolate by taking the DTFT
of the IDFT which is not periodically extended, but instead
zero-padded [264]:3.8
![\begin{eqnarray*}
X(\omega) &=& \hbox{\sc DTFT}(\hbox{\sc ZeroPad}_{\infty}(\hbox{\sc IDFT}_N(X)))\\
&\isdef & \sum_{n=-N/2}^{N/2-1}\left[\frac{1}{N}\sum_{k=0}^{N-1}X(\omega_k)
e^{j\omega_k n}\right]e^{-j\omega n}\\
&=& \sum_{k=0}^{N-1}X(\omega_k)
\left[\frac{1}{N}\sum_{n=-N/2}^{N/2-1} e^{j(\omega_k-\omega) n}\right]\\
&=& \sum_{k=0}^{N-1}X(\omega_k)\,\hbox{asinc}_N(\omega-\omega_k)\\
&=& \left<X,\hbox{\sc Sample}_N\{\hbox{\sc Shift}_{\omega}(\hbox{asinc}_N)\}\right>
\end{eqnarray*}](http://www.dsprelated.com/josimages_new/sasp2/img261.png)
(The aliased sinc function,
, is derived in
§3.1.)
Thus, zero-padding in the time domain interpolates a spectrum
consisting of
samples around the unit circle by means of ``
interpolation.'' This is ideal,
time-limited interpolation
in the frequency domain using the
aliased sinc function as an interpolation kernel. We can almost
rewrite the last line above as
,
but such an expression would normally be defined only for
, where
is some integer, since
is
discrete while
is continuous.
Figure F.1 lists a matlab function for performing ideal spectral interpolation directly in the frequency domain. Such an approach is normally only used when non-uniform sampling of the frequency axis is needed. For uniform spectral upsampling, it is more typical to take an inverse FFT, zero pad, then a longer FFT, as discussed further in the next section.
Next Section:
Zero Padding in the Time Domain
Previous Section:
Ideal Spectral Interpolation