This is just a note to self, for remembering the little details about NumPy's FFT implementation.
- To get the FFT bins to line up perfectly, without any "skirts" or spectral leakage, you need to make a perfect cycle, where the next sample after this chunk lines up with the first. (In other words, the first and last samples should not be the same.)
- To get a sinusoid of amplitude 1 to produce 2 complex exponentials of amplitude 0.5, you need to divide the
fft()
results by the number of samples. - The
fft()
output is from 0 Hz to Nyquist frequency to sampling rate. To plot the spectrum from negative Nyquist frequency to positive Nyquist frequency, with 0 in the center, either usefftshift()
on theampl
variable, or usefftfreq()
to generate a horizontal axis for plotting.