Alright, confession time. I never really understood the Fourier Transform, let alone the Fast Fourier Transform (FFT) in college. I could interpret the frequency response graph just fine, but I didn't understand the transform or the FFT algorithm. Finally, I figured it was time to learn both. I found this Pythonic Perambulations article to be very helpful as I learned. I encourage you to visit this website if you'd like to learn more about the FFT. For now though, focus on this demo I made.

Below you can select three frequencies and their amplitudes. You can also add noise to the resulting signal. The first plot will show the combined frequencies in the time domain. The second plot will show the frequency response of the time signal. Additionally, you can view aliased frequencies mirrored across the Nyquist frequency (512 Hz here, given our 1024 Hz sampling rate).

Hopefully you'll see two key things when adjusting the sliders. First, the frequency response peak is half of the input frequency amplitude. For example a 3 Hz signal with an amplitude of 10 will result in a FFT peak at 3 Hz with a magnitude of 5. Second, adding noise (in this case, non-centered noise) will cause a steep FFT peak at 0 Hz. This noise makes other FFT peaks less distinct and makes interpreting results more difficult.

Frequency 1

Frequency 2

Frequency 3

Noise Level: