Q:

Reduced frequency range FFT

Generally when one takes the FFT of a signal it "works" over the whole bandwidth dividing up the spectrum into chunks given by the resolution. If the bandwidth of the signal is 10khz and your resolution is 1000 then each "frequency" represents a chunk of 10hz(each bin is 10hz in size).
The problem with this method is that it gives the same "size" to each bin even though lower frequencies loose resolution. e.g., a 10hz bin around 25hz frequency contains much more information than 10hz at 8kz. This issue is not hard to fix with the analytical FT since it is just a matter of scale. Is it possible adapt the FFT to have a frequency dependent bin-size?
Essentially when we divide up the frequency range into n chunks we want lower frequencies to have more accuracy since they are lower frequencies.
e.g., I might want a resolution of 0.1hz in the lower frequencies and 10hz in the higher frequencies. The problem with the current FFT is that we must use the highest resolution overall. That is, Because I want a 0.1hz resolution in the lower frequencies I MUST have an 0.1hz resolution in the higher resolutions. This means I'll require a much higher n-point transform than I really need.

A:

It's called the nonequispaced fft or non-uniform discrete Fourier transform:
Code can be found here

