DSPRelated.com
Forums

FFT symmetry

Started by cherriegeller March 4, 2009
Hi, appreciate if someone can explain to me why is it when i do a FFT the
output spectra is symmetrical? Is this to do with the formulae we used? 

Thanks.
On Mar 3, 11:28&#4294967295;pm, "cherriegeller" <cherrie.gel...@gmail.com> wrote:
> Hi, appreciate if someone can explain to me why is it when i do a FFT the > output spectra is symmetrical? Is this to do with the formulae we used? > > Thanks.
Symmetry comes about due to the use of a complex exponential in the DFT (for which the FFT is a more efficient implementation). The complex exponential also allows us to express numbers in complex form (real and imaginary parts, with that tricky little letter 'j' thrown in). If you have a N point real valued input waveform, your samples are the real valued inputs to the DFT or FFT, and the imaginary parts are set to zero. After forward transforming it, you get N outputs that display some symmetry (e.g.: with N even, outputs 0 and N/2 will be real and unique, and outputs 1 to N/2-1 will be conjugate symmetric with outputs N-1 to N/2+1). When you compute the inverse DFT or FFT using the above symmetry, you get your real valued samples back. In contrast, if your input to the inverse DID NOT display the required symmetry, then the result of the inverse would be complex valued with non-zero imaginary parts (perhaps that should be: 'would most likely be complex' - there may be some function that I haven't used in a while that'll give you real results - I'll have to check). So the symmetry is kind of a requirement in being able to get your original input back after computing an inverse DFT or FFT. Now it is also entirely possible to write DFT or FFT algorithms for real valued inputs that don't result in the (redundant) symmetric output. Rather, they result in 'one-sided' outputs from 0 to N/2. When computing an inverse using the outputs of those programs, then typically, you'd use an algorithm that was designed to operate without them (or create the redundant points before doing the inverse calculation). The symmetry question is further complicated by the fact that it's slightly different depending on whether N is even or odd, and it differs even more when doing 2D or higher processing. Kevin
On Mar 3, 11:28&#4294967295;pm, "cherriegeller" <cherrie.gel...@gmail.com> wrote:
> Hi, appreciate if someone can explain to me why is it when i do a FFT the > output spectra is symmetrical? Is this to do with the formulae we used?
well, what particular formulae are you referring to? the fact is that if the input is real, the output of the continuous Fourier Transform is conjugate-symmetric. if Im{ x(t) } = 0 for all t then X(-f) = conj{ X(f) } it's the same with the DFT (of which the FFT is "merely" an efficient method of implementation). but you have to periodically extended it. if Im{ x[n] } = 0 for all n then X[-k] = conj{ X[k] } but the DFT is periodically extended: X[k+N] = X[k] where N is the DFT size. so then you get if Im{ x[n] } = 0 for all n then X[N-k] = conj{ X[k] } which is the symmetry i s'pose you're referring to. r b-j
> Thanks.
On 4 Mar, 05:28, "cherriegeller" <cherrie.gel...@gmail.com> wrote:
> Hi, appreciate if someone can explain to me why is it when i do a FFT the > output spectra is symmetrical? Is this to do with the formulae we used?
It's symmetrical only if the input data are real-valued. If you try to apply the DFT to complex-valued data the spectrum is not symmetric. Rune