[Numpy-discussion] FFT definition

Hanno Klemm klemm@phys.ethz...
Mon Feb 5 04:20:47 CST 2007

Hi there,

I have a question regarding the definitions surrounding FFTs. The help
to numpy.fft.fft says:

>>> help(N.fft.fft)
Help on function fft in module numpy.fft.fftpack:

fft(a, n=None, axis=-1)
    fft(a, n=None, axis=-1)
    Will return the n point discrete Fourier transform of a. n
defaults to the
    length of a. If n is larger than a, then a will be zero-padded to
make up
    the difference. If n is smaller than a, the first n items in a will be
    The packing of the result is "standard": If A = fft(a, n), then A[0]
    contains the zero-frequency term, A[1:n/2+1] contains the
    positive-frequency terms, and A[n/2+1:] contains the
    terms, in order of decreasingly negative frequency. So for an 8-point
    transform, the frequencies of the result are [ 0, 1, 2, 3, 4, -3,
-2, -1].
    This is most efficient for n a power of two. This also stores a
cache of
    working memory for different sizes of fft's, so you could
    run into memory problems if you call this too many times with too many
    different n's.


However, the help to numpy.fft.helper.fftfreq says:

>>> help(N.fft.helper.fftfreq)
Help on function fftfreq in module numpy.fft.helper:

fftfreq(n, d=1.0)
    fftfreq(n, d=1.0) -> f
    DFT sample frequencies
    The returned float array contains the frequency bins in
    cycles/unit (with zero at the start) given a window length n and a
    sample spacing d:
      f = [0,1,...,n/2-1,-n/2,...,-1]/(d*n)         if n is even
      f = [0,1,...,(n-1)/2,-(n-1)/2,...,-1]/(d*n)   if n is odd


So one claims, that the packing goes from [0,1,...,n/2,-n/2+1,..,-1]
(fft) and the other one claims the frequencies go from

Is this inconsistent or am I missing something here?


Hanno Klemm

More information about the Numpy-discussion mailing list