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.9For 1D signals, one of several DCT definitions (the one called
DCT-II)A.10is given by
Note that is the DFT frequency for a length DFT (as opposed to ).
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 and Octave (Octave-Forge), 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:
where denotes the length DFT of .