In GNU Radio Companion, I have created a very simple flow graph where I generate a 1 kHz, 2.0 volts peak-to-peak sine wave, and feed it into an FFT sink and a time domain sink.

The reference dB in the FFT sink is set to 0, and the reference scale is set to 2.0.

As such, I would expect to see 0 dB on the FFT display, but I instead see −10 dB.

Why is this? Is it a problem in my understanding, or a problem in GNURadio?

  • $\begingroup$ I don't know the answer, but I'm curious: why don't you configure the signal source to generate floats, avoiding the short to float conversion? $\endgroup$
    – MBaz
    Nov 28, 2014 at 23:34
  • $\begingroup$ The actual ADC doing the sampling on the remote device is 14-bits, to transmit floats would be less bandwidth-efficient. $\endgroup$ Nov 29, 2014 at 22:55

1 Answer 1


The first thing to remember is that the FFT sink does measure actual PSDs, it performs an FFT, which may be scaled however, and displays its mag-square. So when you say "2 Volts p2p", this is incorrect, as it implies certain things, such as Ohm's law, which don't work that way in DSP.

Now, for your result. First, the window you've chosen (probably Blackman-Harris) will attenuate the main lobe height by a couple of dB. If you had chosen a boxcar window (rectangular), you would have noticed the peak would be at -6 dB. Half the power! And now, things fall into place: In a real-valued FFT (as you are running), the power is distributed between the two peaks that are generated at plus and minus the sinusoid's frequency. And, sure enough, if you run the whole thing in complex mode using a rectangular window, you end up at 0 dB. If you had chosen the QT Frequency Sink, that defaults to showing the entire Nyquist zone and you would have seen the 2nd sinusoid.

Now, is GNU Radio broken for chosen such normalizations? Not really, since they are always arbitrary. But it is always important to realize that the frequency sinks are not true power spectrum analyzers.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.