Fast Fourier transformation

See slides.

An algorithm for computing a Diskret Fourier Transformation. This can be implemented in many ways.

Time complexity: $$O\left(\frac{n}{2} \log_{2}(n)\right)$$

Idea

$W_N$ can be calculated once, and rotated in the imaginary plane to find the others. There will be $N$ amount of $W_N$ going clockwise around the imaginary unit circle. $$W_{N}^{1}, W_{N}^{2} \dots W_{N}^{N-1}$$ $$W_{N}^{N} = W_{N}^{1},,, W_{N}^{N+2} = W_{N}^{3}$$

Window

$$h(n) = h_{\infty}(n)w(n)$$ A good window will be as **narrow as possible** in the frequency domain.

Rectangular

$$ w(n) = \begin{cases} 1, ,, -M \leq n \leq M \ \ 0, ,, \text{else} \end{cases} $$ $h_{\infty}(n)$: The infinite impulse response

A rectangular window results in the frequency domain getting multiplied by a $\text{sinc}$ function.

The $\text{sinc}$ function creates oscillations called Gipps oscillations.

Barlett

Main lobe is wider and in rectangular window, meaning a worse window. It does however reduce Gipps oscillations. $$ w(n) = \begin{cases} 1- \frac{|n|}{M}, &\text{if} -M \leq n \leq M \ 0, &\text{else} \end{cases} $$

$n$: sample number

Hamming and Hanning

Still a wider main lobe than the rectangular window, but much lower oscillations.

Hanning: $\alpha = 0.5$ Hamming: $\alpha = 0.54$

$$ w(n) = \begin{cases} \alpha + (1- \alpha) \cos\left(\frac{n\pi}{M}\right), &\text{if} -M \leq n \leq M \ 0, &\text{else} \end{cases} $$

Errors in FFT

  • Picket fencing: We may not be able to see the frequency we are interested in if it exists between the FFT “bars”.

Matlab

fft()