DSPRelated.com
Forums

Esoteric (apparently) FFT question

Started by Michael Dunn November 22, 2008
Hello. I hope a general question is okay here. I've read that it's
possible to use a half-size FFT if you interleave the input between
the real and imaginary vectors, but in all my research, the output
processing required has remained a bit sketchy. You'd think this
would be better publicized given that it sounds like such a useful
technique.

My best take is that one needs to do a summation and subtraction
from opposite ends of the output vector, but I haven't found details.

I think I'm getting close. Playing in Mathcad, a ramp input gave me
a constant output when summing (phase? real? imag?) and something
close to expected when differencing.

Hey, maybe those vectors are still complex terms. That would make
more sense. Lemme go try again!

No. I think I'm close, but probably have some details wrong. Have
you done this?
thx
Michael
Howdy Michael,

Yes, I've done it. But it was long ago and far away :-)

Do a web search on "real fft algorithm", you'll get lots of
examples. A good place to read about it is in "Understanding Digital
Signal Processing" by Richard Lyons. He has a whole section on it
"Efficiently performing the fft of real sequences". The idea is to use
the real part for one sequence and the imaginary for a second sequence.
Another section describes "Performing a 2N-point real fft". This is more
what you are trying to do where the N point complex fft is used to compute
a 2N point real data stream.

I guess a web search on "2n point real fft" will get you what you want to
know.

Patience, persistence, truth,
Dr. mike

On Fri, 21 Nov 2008, Michael Dunn wrote:

> Hello. I hope a general question is okay here. I've read that it's
> possible to use a half-size FFT if you interleave the input between
> the real and imaginary vectors, but in all my research, the output
> processing required has remained a bit sketchy. You'd think this
> would be better publicized given that it sounds like such a useful
> technique.
>
> My best take is that one needs to do a summation and subtraction
> from opposite ends of the output vector, but I haven't found details.
>
> I think I'm getting close. Playing in Mathcad, a ramp input gave me
> a constant output when summing (phase? real? imag?) and something
> close to expected when differencing.
>
> Hey, maybe those vectors are still complex terms. That would make
> more sense. Lemme go try again!
>
> No. I think I'm close, but probably have some details wrong. Have
> you done this?
> thx
> Michael
>

  Thanks very much -- an interesting book.



  Unfortunately, the process is much more complicated than I
had thought. Creating the 4 new vectors from the FFT output is simple
enough, but then you have to run them through 2 formulae of the
sort:






  Yikes! Think I'll stick with a full-length FFT...



Michael









Howdy Michael,



Yes, I've done it.  But it was long ago and far away :-)



Do a web search on "real fft algorithm", you'll get lots
of

examples.  A good place to read about it is in
"Understanding Digital

Signal Processing" by Richard Lyons.  He has a whole section
on it

"Efficiently performing the fft of real sequences". 
The idea is to use

the real part for one sequence and the imaginary for a second
sequence.

Another section describes "Performing a 2N-point real fft". 
This is more

what you are trying to do where the N point complex fft is used to
compute

a 2N point real data stream.



I guess a web search on "2n point real fft" will get you
what you want to

know.



Patience, persistence, truth,

Dr. mike



On Fri, 21 Nov 2008, Michael Dunn wrote:



>    Hello. I hope a general question is okay here.
I've read that it's

> possible to use a half-size FFT if you interleave the input
between

> the real and imaginary vectors, but in all my research, the
output

> processing required has remained a bit sketchy. You'd think
this

> would be better publicized given that it sounds like such a
useful

> technique.

>

>    My best take is that one needs to do a
summation and subtraction

> from opposite ends of the output vector, but I haven't found
details.

>

>    I think I'm getting close. Playing in Mathcad,
a ramp input gave me

> a constant output when summing (phase? real? imag?) and
something

> close to expected when differencing.

>

>    Hey, maybe those vectors are still complex
terms. That would make

> more sense. Lemme go try again!

>

>    No. I think I'm close, but probably have some
details wrong. Have

> you done this?

>

>

> thx

> Michael

>