# Why is fft output complex?

**URL:** <https://www.ruby-forum.com/t/why-is-fft-output-complex/232479>\
**Category:** GNU Radio\
**Created:** [October 11, 2014, 11:40pm UTC](https://www.ruby-forum.com/t/why-is-fft-output-complex/232479 "2014-10-11T23:40:25Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [October 11, 2014, 11:40pm UTC](https://www.ruby-forum.com/t/why-is-fft-output-complex/232479/1 "2014-10-11T23:40:25Z")

</div>

* * *

Discuss-gnuradio mailing list  
removed\_email\_address@domain.invalid  
[https://lists.gnu.org/mailman/listinfo/discuss-gnuradio](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [October 11, 2014, 11:59pm UTC](https://www.ruby-forum.com/t/why-is-fft-output-complex/232479/2 "2014-10-11T23:59:41Z")

</div>

On 10/11/2014 05:38 PM, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I can’t wrap my head around why fft transform of complex signal produces a  
> complex output. After all the output reflects the amount of energy per  
> frequency bin and frequency bins and energy are both real numbers, no?
> 
> I’m trying to write a python script to analyze the energy across frequency  
> bins but I don’t know where to insert a complex to mag block. I think if I can  
> understand the fft I will know to put the complex to mag.

The output of an FFT is complex because it contains magnitude _and_  
phase. If  
the output is I,Q (cartesian coordinates) then the magnitude is the  
length of  
the vector from 0,0 to I,Q or sqrt(i^2 + q^2). The phase of the signal  
is  
atan2(Q,I).

Note that the FFT transforms Voltage samples into Voltages per frequency  
bin.  
When you say “energy” you may mean power which is the magnitude squared  
or (i^2

- q^2).

jeff, wa1hco

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [October 12, 2014, 12:04am UTC](https://www.ruby-forum.com/t/why-is-fft-output-complex/232479/3 "2014-10-12T00:04:21Z")

</div>

On Oct 11, 2014, at 5:38 PM, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> I can’t wrap my head around why fft transform of complex signal produces a  
> complex output. After all the output reflects the amount of energy per frequency  
> bin and frequency bins and energy are both real numbers, no?
> 
> I’m trying to write a python script to analyze the energy across frequency bins  
> but I don’t know where to insert a complex to mag block. I think if I can  
> understand the fft I will know to put the complex to mag.
> 
> Thanks  
> Brad.
> 
> * * *

Dear Brad,

```
What you write is mostly correct. But you are thinking of the 

```

power spectrum, which is the modulus of the FFT and thus entirely real.  
An FFT contains more information. For example, a Fourier Transform  
(the continuous version of an FFT) can be “inverted” using an Inverse  
Fourier Transform to exactly reproduce the original time-domain  
waveform. That would not be possible using the power spectrum alone,  
since information is lost in going from the complex Fourier Transform to  
the power spectrum.

–Dan Marlow

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [October 12, 2014, 4:48pm UTC](https://www.ruby-forum.com/t/why-is-fft-output-complex/232479/4 "2014-10-12T16:48:18Z")

</div>

Brad:

You are treating an FFT as if it were a spectrum analyzer which produces  
a  
magnitude or energy profile of how much signal is at a particular  
frequency. The FFT does much more than that. It tells not only what  
magnitude is at a frequency but what phase angle the signal has there.

Let’s take an example:

You would not want the fft of sin(t)+cos(2t) to be the same as  
sin(t)+sin(2t). You would want the result to show that the stuff at 2t  
is  
90 degrees out of phase depending on what signal you input.

Bob
