The items after N/2 are the "negative frequencies"
It is not the case for real FFTs, the negative
frequency components are not stored in the
returned array.
Time domain data of length N are represented by
N Fourier components with N/2 positive and N/2
negative frequencies. The negative components are
"mirror image" of the positives, just complex-
conjugate, as Adam said. In many cases only the
positive frequency components are used in analyses.
If the input vector with N elements are
complex-valued, it is 2N long, and the FFTed data
contains N Fourier components. Since each of
the components is complex and represented by two
values (real, imag), the length required to store
the FFTed data are 2N, (N/2)*2 for positive
frequencies and (N/2)*2 for negatives.
If the input vector is of N real, we have only
N length field (many of C FFT routines store the
results in-plane) and thus only the positive
frequency components of N/2 complex values are
stored in the results.
···
On 6/1/06, Alex Polite <notmyprivateemail / gmail.com> wrote:
>
> Howdy.
>
> I need to do some Fast Fourier Transforms for an audio project I'm
> working on. Problem is I don't know shit about math
>
> Reading a dozen online tutorials on FFT tells me that the FFT of a
> vector of real time domain data of size N should yield a vector of
> frequency domain data of size N/2.
>
> So I try out the different FFT functions in GSL, but the ones that
> accept a vector of real data of size N also return a vector of size N.
>
> What's the deal here?
>
> --v