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.
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, use
fftshift()on both the
amplvariables. You can also just use
fftfreq()to generate a horizontal axis for plotting, but the plot will have extraneous lines on it.
- If the result of an IFFT has some complex residue, use
real()to get rid of it, not