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.

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

removed_e[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.

Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs