In image coding (such as MPEG and JPEG), and many audio coding
algorithms (MPEG), the discrete cosine transform (DCT) is used
because of its nearly optimal asymptotic theoretical
coding gain.A.12For 1D signals, one of several DCT definitions (the one called
DCT-II)A.13is given by
For real signals, the real part of the DFT is a kind of DCT:
Thus, the real part of a double-length FFT is the same as the DCT except for the half-sample phase shift in the sinusoidal basis functions (and a scaling by 2 which is unimportant).
In practice, the DCT is normally implemented using the same basic efficiency techniques as in FFT algorithms. In Matlab, the functions dct and dct2 are available for the 1D and 2D cases, respectively.
Exercise: Using Euler's identity, expand the cosine in the DCT defined by Eq. (A.2) above into a sum of complex sinusoids, and show that the DCT can be rewritten as the sum of two phase-modulated DFTs: