PSD in dBm/Hz

Dear Sir,

I am using USRP to receive signal, and then plot the signal using “WX
GUI
FFT Sink”.
I hope to get the vertical axis as “Power Spectral Density in dBm/Hz”.
Is there any way to do that?

Regards.

Do you mean adding a text label on the vertical axis, or scaling the
spectrum? For the latter, you would have to feed the USRP a known
(calibrated) noise source that is well above the USRP noise floor such
as an
HP 346 noise source. Then read the value from the spectrum and just
re-scale the samples to your known PSD. If you change the FFT bin size,
decimation, tuning, etc, you may need to re-scale.

I suppose you could also feed the USRP with a CW tone of known power to
figure out it’s gain, then terminate the input with 50 ohms (i.e. -174
dBm/Hz) and measure the power (which would be -174 dB/Hz + NF + gain).

In either case, you need a known power source to convert the dB to dBm,
and
noise to fill your bandwidth to get the 1/Hz.

Lou
KD4HSO

activecat wrote

I am using USRP to receive signal, and then plot the signal using “WX GUI
FFT Sink”.
I hope to get the vertical axis as “Power Spectral Density in dBm/Hz”.
Is there any way to do that?


View this message in context:
http://gnuradio.4.n7.nabble.com/PSD-in-dBm-Hz-tp52572p52578.html
Sent from the GnuRadio mailing list archive at Nabble.com.

Activecat,

this is actually on our FAQ:
http://gnuradio.org/redmine/projects/gnuradio/wiki/FAQ#How-do-I-know-the-exact-voltagepower-of-my-received-input-signal

This is a very difficult problem to solve and it requires expensive lab
equipment.

Regards,
Martin

Dear Sirs,

Thanks for the answers. Let me further elaborate.

I could get what I want using Matlab, via below steps:
1). Using GRC flowgraph, connect the USRP Source to a File Sink.
2). Copy the file (says, test02.dat) to a PC running Matlab.
3). Using Matlab, run these commands:
a). c = read_complex_binary(‘test02.dat’)
b). figure; periodogram( c(1:100000), [], [], 10e6 ) #
samp_rate is 10e6

In this case I am able to get a PSD plot.
The question is, how to produce the PSD plot using only gnuradio
(without
Matlab) ?

Thank you very much.

Equivalent function here, which could be encapsulated into a GR block if
you
don’t need speed:

http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.signal.periodogram.html

I suppose it boils down to the difference between an FFT just normalized
to
bandwidth, and the FFT of the autocorrelation; the latter is the true
definition of PSD. I learned this once 20 years ago (power signals vs.
energy signals) but I don’t remember anymore. Maybe someone can chime
in.

Lou

activecat wrote

samp_rate is 10e6

In this case I am able to get a PSD plot.
The question is, how to produce the PSD plot using only gnuradio (without
Matlab) ?

Thank you very much.


View this message in context:
http://gnuradio.4.n7.nabble.com/PSD-in-dBm-Hz-tp52572p52596.html
Sent from the GnuRadio mailing list archive at Nabble.com.

Hi Activecat,
I still don’t understand; do you really just want a offline data
periodogram?
In that case, have a look at the python “matplotlib” library examples.

Also, Martin’s and Lou’s statements still stand: just by labeling an
axis dBm doesn’t make the data actually represent that physical entity.

Greetings,
Marcus

The gr-specest toolbox has all sorts of spectrum estimation algorithms,
but they also don’t calibrate your device. A periodogram would be in
there, called ‘welch’.

M

On 03/06/2015 10:12 AM, Marcus M. wrote:

On 03/06/2015 02:54 PM, Activecat wrote:

Thanks for the answers. Let me further elaborate.

I could get what I want using Matlab, via below steps:


Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
So, I think what is wanted is some version of:

signal—>window–>FFT—>scaling-of-some-sort(both linear and
non-linear)—>average—>display

GR can do all of those things, and the FFT “instrumentation” widgets are
a version of the above.

But as several have pointed out, and I’m about to repeat, without
calibration you only know what the results mean in a relative
sense. The
instantaneous voltages as seen by the ADC have been manipulated by
all the analog “goo” in front of the ADC, including amounts of gain that
aren’t precisely known. Further, the ADC output is filtered (via
decimation) before you see it, which should be a largely-linear
operation, but you
don’t know the exact gain of that transform. So, the only way to get
precise numbers in dBm/Hz is to use laboratory calibration measurements
so
that you can refer this to “at the plane of the antenna connector”.
That’s the only reasonable way, and it’s the way that laboratory grade
things
like spectrum analyzers deliver fairly-precise numbers–not because
of mathematical “tricks”, but because they are calibrated, regularly
against
calibration standards.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs