I am a software engineer trying to wrap his head around Fast Fourier Transform (FFT). Specifically, I need to implement it as part of some software I am writing. Now I can handle the implementation of the algorithm/operations, and in fact will likely just use an open source math library to do most of the heavy lifting for me. But there's something fundamental here that I just want to understand.
According to Wikipedia:
Fourier analysis is the study of the way general functions may be represented or approximated by sums of simpler trigonometric functions. Fourier analysis grew from the study of Fourier series, and is named after Joseph Fourier, who showed that representing a function as a sum of trigonometric functions greatly simplifies the study of heat transfer.
For example, determining what component frequencies are present in a musical note would involve computing the Fourier transform of a sampled musical note. One could then re-synthesize the same sound by including the frequency components as revealed in the Fourier analysis. In mathematics, the term Fourier analysis often refers to the study of both operations.
So here we have two examples:
- Decomposing a general function into component trig functions to study heat transfer; and
- Decomposing a sampling of a musical note into component frequencies
So I get the what here; that is, what FFT/Fourier Analysis is attempting to do (decomposing a function into component functions), and like I said, I can handle the how later (either coding up FFT myself or using a library), but what I'm stuck on is the why.
Why do this? Using one of the examples above, why decompose a sound sample (musical note) into component frequencies? What is there to be gained/learned from doing this? What extra information does this expose for analytical purposes? Why can we better understand heat transfer by using FFT to decompose some "heat function" into smaller/component trig functions?