Hi,

I have begun to use an FFT in software, and I started thinking about how to turn the intensity over frequency FFT chart into a frequency over time chart, ie, by making a strip chart, time/frequency domain "Gabor spectrum STFT" with each XY point of the chart having an intensity based on the power at that frequency. So I was thinking to take that a step further (and push the limits of a modern CPU), instead of generating the strip chart data with FFT blocks of 1000 samples, what would happen if there was an FFT generated for each incoming sample, ie 1000 FFT's per second for a 1kHz sample rate, with each new FFT centered on the next incoming sample. If this data was then stripcharted (1000 new columns per second added to the chart) for a sine wave input of 250Hz, what would the frequency over time greyscale image look like? For a normal Gabor spectrum STFT chart (ie. 1 FFT per 1000 samples) with a 250Hz sine wave input and 1kHz sampling frequency, the chart should just show a steady intensity peak from left to right half way up the chart (500Hz Nyquist frequency would be the top of the chart). Also this might be a good way to encode/decode data for communication, in a 2-dimensional representation that is converted via FFT's to and from voltage/time for each sample, as long as the hardware can do one FFT per sample.

Gabor spectrum (STFT short time fourier transform chart:

formatting link

cheers, Jamie

-------------------- It won't do any good. There is an innate inverse relationship between frequency and time(f = 1/t). The Fourier transform's basis functions are not localized and cannot describe local behavior well.

Take a square wave. The Fourier transform of this has infinite bandwidth. Yet the function is one of the most basic functions that exist. The Fourier transform has extreme difficulties describing functions that have sharp transitions because sharp transitions occur over short periods of time and short periods of time have high frequencies(the f = 1/t thing).

We generally like to think of a square wave or any other period function with period p as having a frequency of 1/p. The Fourier transform can recover this fundamental frequency but really it can't. Remember we have to apply a low pass filter to it(mathematically we can take the limit though).

So, if something simple as a square wave has infinite bandwidth no matter what kinda fourier transform you use you won't be able to describe it accurately with finite bandwidth. Your sliding windowed Fourier transform can't do any better than a multiresolution windowed Fourier transform.

There are several transforms that take a time based signal and transform it in a frequency and time. The wavelet transform is one such transform.

But no matter how you slice and dice it, frequency and time are inversely correlated. You can attempt to use a basis that is more local than the fourier basis and you'll end up with something like wavelets. You can go further and attempt to use the signal itself to determine the basis and get something like empirical mode decomposition.

Ultimately you'll always end up with the same problem of trying to narrow down the frequency and time and it just can't be done.

For example, what is the frequency of some signal s(t) at time t = 0? It's a nonsensical question. Ultimately what you have to do to answer such a question is not use the point at t = 0 but an interval around that point. This allows you to "zoom out" a bit and see what the signal is doing and hence determine it's frequency. For lower frequencies you have to zoom out more because they have a larger period(p = 1/f and when f is small p is large).

The real issue at hand is we define frequency as the rate of something occurring periodically. Mathematically we actually compare it to sinusoids. That is, sinusoids is the model for frequency. But a sinusoid has no instantaneous frequency. Therefore anything that is composed of sinusoids will not have instantaneous frequencies. Wavelets have more of a localized frequency but now frequency becomes more vague(in fact wavelets do not have frequency and we are comparing apples to oranges now).

There is a way to define instantaneous frequency as a mathematical generalization:

formatting link

The problem is that it seems to be useless to interpret as a real frequency or we just haven't found out how.

i.e., with the instantaneous frequency we can actually answer the above question about the frequency of s(t) at time 0 but don't expect for it to make a lot of sense.

The main point is that you may not get much benefit but you are limited mathematically so no matter your algorithms are they can't overcome the frequency/time limitations described above. It is not inherent in the mathematics itself but in the concept of frequency.