# Discrete Cosine and Sine Transforms

Can anyone explain to me what is the point of using complex numbers to get the Discrete Fourier Transform when the Discrete Cosine Transform and Discrete Sine Transform exist and both use only real numbers. Is there not another way of having a Discrete "Cosine and Sine" Transform all in one that does not use complex numbers? After all frequencies are suppose to be physical cosines and sines, not complex numbers.

-
You are a bit confused; DFT uses complex exponentials as a basis set; DCT uses cosines only as a basis set; DST uses sines only as a basis set. Quite related, they are, but completely different. – J. M. Feb 7 '12 at 11:05
My question is not asking "How are complex exponentials different from cosines and sines?". My question is why are complex exponentials needed at all for the DFT? For comparison, a Fourier series can be represented using complex exponentials but its not mathematically absolutely necessary since it can be recasted using only sines and cosines. – user782220 Feb 7 '12 at 22:20
Notational convenience comes to mind, among other things (there is for instance that nasty factor of $1/2$ in the constant term that you have to keep track of when you insist on working entirely in $\mathbb R$). Have you by any chance seen Van Loan and Briggs/Henson? Or Bracewell and Brigham, for that matter? I think they explain it better than I can... – J. M. Feb 7 '12 at 22:56

The solutions to Maxwell equations lead to complex functions a real event is presented not just by complex frequencies but also by negative frequencies. Suggest you will look at Digital Signal Processing field as a source to understand when complex representation is useful (Radar systems, communication, sonar...) and when DCT (compression as example). You might also benefit from reading about the Hilbert transform it the DSP field.

-

If "reality" of the complex numbers troubles you, think that you are working with $1\times2$ matrices and the special multiplication rule

$$[a\ b]\times[c\ d]=[ad-bc\ \ ac+bd].$$

The compactness of complex number computations is irreplaceable,

$$e^{i(a+b+c)}=e^{ia}e^{ib}e^{ic}$$ vs $$\cos(a+b+c)=\\\cos(a)\cos(b)\cos(c)-\sin(a)\sin(b)\cos(c)-\sin(a)\sin(c)\cos(b)-\sin(b)\sin(c)\cos(a)\\\sin(a+b+c)=\\\sin(a)\cos(b)\cos(c)+\sin(b)\cos(a)\cos(c)+\sin(c)\cos(a)\cos(b)-\sin(a)\sin(b)\sin(c)$$

-

The discrete Fourier transform simply changes basis to a very special basis, the "discrete Fourier basis".

The "discrete Fourier basis" is a basis of eigenvectors for the cyclic shift operator $S$ defined by: \begin{equation*} S(x_0,x_1,\ldots,x_{n-1}) = (x_1,x_2,\ldots,x_{n-1},x_0). \end{equation*} Note that $S$ preserves norms, so $S$ is unitary, which implies that $S$ is normal. The spectral theorem tells us that there is an orthonormal basis of eigenvectors of $S$. You could easily find the eigenvalues and eigenvectors of $S$, and discover the discrete Fourier basis, all by yourself. (It's a very neat exercise.)

A very important type of linear operator on $\mathbb C^n$ is a "shift-invariant" linear operator. To say that a linear operator $T$ on $\mathbb C^n$ is shift-invariant means that if you shift the input, then the output is shifted the same way: \begin{equation*} T(S(x)) = S(T(x)) \quad \text{for all }x \in \mathbb C^n. \end{equation*} In other words, $S$ commutes with $T$.

As you might guess, from the fact that $T$ commutes with $S$, any shift-invariant linear operator on $\mathbb C^n$ is diagonalized by the discrete Fourier basis. (A key assumption in "simultaneous diagonalization" theorems is that two linear operators commute with each other. Because $S$ has, as it turns out, $n$ distinct eigenvalues, a particularly easy simultaneous diagonalization theorem can be applied in this case.)

This is, fundamentally, the reason that the discrete Fourier basis is so important. Shift-invariant linear operators are important to us, and with the discrete Fourier transform we can diagonalize them, which allows us to understand them and do computations with them easily.

(Even better, there is an extremely efficient algorithm for computing the discrete Fourier transform -- the "fast Fourier transform" algorithm.)

In our quest to understand shift-invariant linear operators, we are forced to use complex numbers, because the vectors in the discrete Fourier basis unavoidably have complex components.

-