Numeric:FFT inverse_real_fft doesn't trevni!

Steven G. Johnson stevenj at alum.mit.edu
Sat May 15 00:23:32 EDT 1999


Christian Tismer <tismer at appliedbiometrics.com> wrote:
> No, that's a misconception.
> The real fft is just a speedup for cases where your data
> has only real coefficients. Providing an inverse function
> would be useless, since after any modifications of your
> complex result, you will usually not expect a real result.

That's rather too pessimistic, actually.

The output y[] of a real FFT has Hermitian symmetry: y[N-k] = y[k]*.  Any
modification which preserves this symmetry will continue to produce a real
result after an inverse transform.  For example, if you multiply the
results of two real transforms, the result still has Hermitian symmetry. 
Thus, the extremely important case of fast real convolutions/correlations
benefits from a fast complex->real transform.  Most filters, e.g. a
band-pass filter, also preserve this symmetry (since you usually want to
do the same thing to both positive and negative frequencies).  (Another
useful case comes in solving differential equations in physical systems
with inversion symmetry.)

An efficient real-complex FFT will output only half of the spectrum (the
other half being redundant), and the inverse transform will take as input
the same half of the spectrum.  Thus, the Hermitian symmetry is maintained
"automatically" since you can only modify half the spectrum, and the other
half is assumed to be symmetric.

Cordially,
Steven G. Johnson




More information about the Python-list mailing list