[comp.dsp] Re^2: FFT / FHT

allan@didsgn.uucp (didsgn) (10/05/89)

brianw@microsoft.UUCP (Brian Willoughby) writes:

>In article <10471@csli.Stanford.EDU> poser@csli.stanford.edu (Bill Poser) writes:
>>The Fast Hartley Transform is described in great detail in
>>Ronald Bracewell's recent book _The Hartley Transform_. ...

>For use in a one-way transform - perhaps to display frequency spectrum
>content of audio data - the FHT might be the choice.

>But, since HiFi audio is often discussed in this group, I wanted to point
>out that the phase information is necessary to accurately reconstruct the
>original signal.  If the goal is to process the frequency domain data
>obtained from a Fourier Transform and then reconstruct a modified version
>of the original time domain data, it follows that a great deal of
>information would be lost without the phase of each frequency component.

I would like to point out that the FFT transform may be derived quite
simply from the FHT transform. Since you wanted all the phase info
contained in the FFT, you now have it. However, since FHT is computed
over real numbers and not imaginary numbers, the computation effort is
much less. To compute (in C) the FFT from the FHT is:

    for ( i =0 ; i < N/2; i++ )
    {
	FFT[ i ].real = FFT[ N-i ].real = (FHT[ I ] + FHT[ N-i ])/2.0 ;
	FFT[ i ].imag =
	    -( FFT[ N-i ].imag = (FHT[ I ] - FHT[ N-i ])/2.0 ) ;
    }

In a similar fashion, the FHT can be derived from the FFT so that the
inverse transform can be found:

    for ( i =0 ; i < N; i++ )
    {
	FHT[ i ] = FFT[ i ].real - FFT[ i ].imag ;
    }

And since the FHT is faster than the FFT, it is often faster to use
the FHT and convert than to actually compute the FFT of a data set.

-Allan G. Schrum

P.S. I tried to be acurate with the above equations, but if I made a
typo or other small error, please adjust flames to an appropriate
level :-)

-- 
Allan G. Schrum                 | Sign it? Without reading the fine print?
Digital Design, Inc.            |-----------------------------------------
3060 Business Park Drive        | (404) 447-0274
Norcross, GA 30071              | ...!gatech!rebel!didsgn!allan