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}.$$