Fourier transform: Difference between revisions

From David's Wiki
(Created page with "The Fourier transform decomposes a signal (i.e. a time series) into multiple sine and cosine waves. ==Background== Suppose we have signal<math>f(x)</math>.<br> Then the Fourier transform <math>\hat{f}(\xi)</math>is defined as: <math display="block">\hat{f}(\xi) = \int_{-\infty}^{\infty} f(x) e^{-i2 \pi \xi x} dx</math> Recall that Euler's formula states: <math>e^{ix} = cos(x) + i \sin(x)</math>. Hence, <math>e^{-i2 \pi \xi x} = cos(2 \pi \xi x) + i \sin(2 \pi \xi x)<...")
 
Line 22: Line 22:
<math display="block">A_k = \sum_{0}^{n-1} f(x) \exp\ \left\{ -2 \pi i \frac{mk}{n} \right\}</math>
<math display="block">A_k = \sum_{0}^{n-1} f(x) \exp\ \left\{ -2 \pi i \frac{mk}{n} \right\}</math>
and IFFT is defined as:
and IFFT is defined as:
<math display="block">a_m = (1/n) \sum_{0}^{n-1} \hat{f}(\xi) \exp \left\{ 2 \pi i \frac{mk}{n} \right\}</math>
<math display="block">a_m = \frac{1}{n} \sum_{0}^{n-1} \hat{f}(\xi) \exp \left\{ 2 \pi i \frac{mk}{n} \right\}</math>


==Properties==
==Properties==

Revision as of 18:57, 20 January 2023

The Fourier transform decomposes a signal (i.e. a time series) into multiple sine and cosine waves.


Background

Suppose we have signal\(\displaystyle f(x)\).
Then the Fourier transform \(\displaystyle \hat{f}(\xi)\)is defined as: \[\hat{f}(\xi) = \int_{-\infty}^{\infty} f(x) e^{-i2 \pi \xi x} dx\]

Recall that Euler's formula states: \(\displaystyle e^{ix} = cos(x) + i \sin(x)\). Hence, \(\displaystyle e^{-i2 \pi \xi x} = cos(2 \pi \xi x) + i \sin(2 \pi \xi x)\) In other words, the Fourier transform is the integral (i.e. alignment) of signal times some sine and cosine waves.

The inverse of the fourier transform is: \[f(x) = \int_{-\infty}^{\infty} \hat{f}(\xi) e^{i2 \pi \xi x} d\xi\]

Discrete Fourier Transform

A naive DFT would compute the matrix of \(\displaystyle e^{-i2 \pi \xi x}\) and multiply it with the signal. This would take \(\displaystyle \mathcal{O}(n^2)\) time.
However, most languages have an FFT library which can compute the DFT in \(\displaystyle \mathcal{O}(n \log n)\) time.

In most languages, FFT is defined as: \[A_k = \sum_{0}^{n-1} f(x) \exp\ \left\{ -2 \pi i \frac{mk}{n} \right\}\] and IFFT is defined as: \[a_m = \frac{1}{n} \sum_{0}^{n-1} \hat{f}(\xi) \exp \left\{ 2 \pi i \frac{mk}{n} \right\}\]

Properties

Note \(\displaystyle \bar{x}\) refers to the complex conjugate

  • Linearity: \(\displaystyle FFT(\lambda f + g) = \lambda FFT(f) + FFT(g)\)
  • \(\displaystyle IFFT(f) = (1/n) \bar{FFT}(\bar{f})\)
  • \(\displaystyle FFT2(f) = FFT_{x}(FFT_{y}(f)) = FFT_{y}(FFT_{x}(f))\)

Short-time Fourier transform

The STFT applies FFT using a sliding window over the signal.
This produces a matrix of FFT values over time which allow you to see how the signal is changing.