graduate student

FFT Normalization

Research Note ~ Normalizing a Fourier Transform

In Python, the forward Discrete Fourier Transform (DFT) for a time signal has no normalization factor while the inverse DFT has a normalization factor of \(\frac{1}{N}\), where \(N\) represents the total number of samples.

One way to normalize the forward FT for a time series \(x(t)\) is this form:

\[X(\omega) = \frac{1}{N} \sum_{t=0}^{N-1} x(t) \exp(-i \omega t),\]

where \(\frac{1}{N}\) represents the normalization constant.

Note: \(N\) represents the total number of samples, but this number is different depending on the dimensionality of the FT:

  • 1-D FFTs: \(N\) represets the total number of samples in the time domain
  • N-D FFTs: \(N = N_x \times N_y \times N_t\) (or the size of the array)

Normalization of various FT products:

Product Normalization Description
Fourier Transform \(X(\omega)\) Complex Valued
Amplitude & phase information
Amplitude/Magnitude \(\frac{\mid X(\omega) \mid}{N}\) The peaks value(s) of the signal in the time domain
Units: Unit of the signal, say V
Power Spectrum \(\frac{\mid X(\omega) \mid^{2}}{N^2}\) Power as a function of frequency
Units: \(V^2\)
Power Spectral Density \(\frac{N}{f_s}\frac{\mid X(\omega)\mid^2}{N^2} = \frac{\mid X(\omega)\mid^2}{f_S N}\) Power as a function of frequency per unit frequency
Units: \(\frac{V^2}{Hz}\).
\(f_s\) is the sampling frequency

When a window is used $w(i)$, the normalization constant for all of these quantities becomes

\[\frac{1}{N} = \frac{1}{\sum_{i=0}^{N} w(i)}\]

and

\[\frac{1}{N^2} = \frac{1}{\left( \sum_{i=0}^{N} w(i) \right)^2}.\]