I finally have a somewhat satisfactory intuition for what frequencies off of the DFT bins mean?

I used to think they meant either nothing, or they were some perverse projection that really should be expressed as the privileged linearly independent basis vectors.

The thing that really bothered me is that numpy will show these “wide spikes” in your graph by zero-padding your DFT, and then we will claim that we got a “finer grained resolution” of the frequency domain.

There are two ways to add samples:

Taking a step back from the second paradigm, it might help if we look at the continuous time Fourier Transform. We know that any two distinct frequencies are orthogonal, and therefore have dot product 0.

We’re not going to jump to the periodic fourier transform - We’re going to just try projecting 1 Hz and 1.5 Hz over time, and “incrementally” build the dot product for a sin wave with 1 Hz. Furthermore, we’re going to constantly normalize the sum so that the max sum is 1

I guess the point is that, as you extend these kinds of things to infinity, you want some kind of intuitive definition for what “orthogonal” is. But given the nature of the exponentials, things are technically “not orthogonal” for a finite duration (at the wrong boundary) because that specific frequency component keeps wobbling between two bounded constnat values. And you want to encode that intuition somehow. I’m sure advanced math can encode that intuition just fine, but in terms of the valid transforms, we can avoid this problem “by construction” by just picking the DFT bases as the privileged ones for finite supports.

The point of the periodic condition in both the “periodic fourier transforms” \(\mathbb{R}/(2\pi\mathbb{Z}) \to \mathbb{Z}\) and the DFT \(\mathbb{Z}_n \to \mathbb{Z}_n\), is that at these bases, you know that the frequencies will cancel out to zero because you know something about the period.

(I do know from the algebra side - both abstract and linear - there are plenty of reasons to show that the DFT bases are the “correct” bases by construction. That’s cool, but I’d imagine the analysis proofs used in the CTFT are where the real meat behind my intuitions are. How do you intuitively say a function is orthogonal and “goes to zero” at infinity, even when you have no such guarantee on most finite support intervals?)

(Note: Maybe I’m overthinking it and it’s just limits and forget.)