How to calculate SNR?

Hi All,

In order to calculate the SNR at the receiver, I have generated a QPSK
signal, sent it with an USRP through a canal and then received it with
another USRP.
So, I have used The “MPSK SNR Estimator” block at the receiver to
monitor
the SNR values. But values are not correct, I have tried “MPSK SNR
Estimator Probe” block, but values still not correct.

I am wondering what is the proper way to use “MPSK SNR Estimator” block?
or
if there is another block or method to retrieve SNR values correctly? So
that I can find correct results.
Any help is appreciated. Thank you.

Best regards,
Azza

On 03/25/2014 05:00 PM, Azza Ben Mosbah wrote:

Any help is appreciated. Thank you.
Estimating SNR is a bit of a science. How do you know your SNR values
are incorrect?
In general, our SNR estimators have been tested a lot and should work.
Post your rx flow graph and your results, that way we can tell what
you’ve been doing.

M

Hi azza and Martin,
I have the same problem, that is my flowgraph.
The SNR values have not sens. For example, with 0.065 transmitting power
i
had values between 0.06 and -0.012. may be the problem is how to use the
block in the flowgraph.
Zakaria

View this message in context:
Sent from the GnuRadio mailing list archive at Nabble.com.

I calculate the SNR using the formula
SNR=20*log10[RMS(signal)/RMS(noise)].
You find attached my flow graph.

Azza

View this message in context:
Sent from the GnuRadio mailing list archive at Nabble.com.

On 03/25/2014 11:04 PM, zielalaoui wrote:

Hi azza and Martin,
I have the same problem, that is my flowgraph.
The SNR values have not sens. For example, with 0.065 transmitting power i
had values between 0.06 and -0.012. may be the problem is how to use the
block in the flowgraph.
Zakaria

Well, you need to provide valid PSK symbols.
Have a look at gr-digital/examples/snr_estimators.py.

M

As you can see from the flowgraph, I add noise to the signal to simulate
a
channel. And I calculate the SNR at the receiver. Since the noise is
known,
I can calculate my SNR.
But, comparing to the output of the “MPSK SNR Estimator Probe”, it is
not
the same.

Azza

View this message in context:
Sent from the GnuRadio mailing list archive at Nabble.com.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Azza,

how do you know RMS(noise)?

Greetings,
Marcus

On 26.03.2014 16:14, Azza Ben Mosbah wrote:

Sent from the GnuRadio mailing list archive at Nabble.com.

mailing list [email protected]

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTMu9PAAoJEBQ6EdjyzlHtCJgH/3fsLtytf1iHUfNFTrE881Dk
msf8h+VPYYaczbVjqdCxXWMWhWA/XRrUt2tHg9t1aIkDa7F2GdEe/jau8nvaEQce
sd9dxkknZHlOvLf+Uup3hwu5Sksdw2o+DJRTugoRcdVKhntR4cEseGyGp9KPgI+h
cef/VFRHbCCeU45zLFto8bHKiWEN/G5jb7ImaAUIFeMhOs403i7IF1pyVpnH8j8N
ChG62isPZHzTl3a2pWJTLQWjlzuBTVknHNi05uMm1W7rTL4YAgyvNg5ysp8HgfoD
k5mUWqn2Vbmn8+3OYg26Ojnrcza20FKyemIKX5C0z7cPcYeaViez4ovZX1bRBgM=
=IGpn
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ah, the picture of your flowgraph took some time to load, so I thought
it was broken.
First of all: to get truly comparable numbers, you should set the IIR
alpha to the same value for the probe and the RMS blocks.

Then: What you’re doing with the RMS blocks is something different
than what the MPSK SNR estimators do; please refer to
and the papers linked on the respective implementations for detail.

Greetings,
Marcus

On 26.03.2014 16:16, Marcus M. wrote:

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTMvK8AAoJEBQ6EdjyzlHtUHwH/RUSeDJXGXWYQtcmPAEGz+XK
FNy79zpqogkhYWZ9EPylVPZL0qS9jDWAcymOxw/FCz280zqOM8AA+CSIGLDWrQEI
667IcrV44/fL4fMgiiIC2p87iUPqpqIfoI6TU67qXjEkq4vsXxlosbG0NoH61DnK
D6dxWVv3yT4zp387BZ4CfT3XS9jvXVqO4XlPt0INstAC83v/j1xiU2392fwQJZsn
pHGUFY/SSDsYRWO8a+Mf+IxvtyEPB1EDXC3ckELs/OGxWTin+uuYx1aPCq+RmTo3
N5v2BTaH8YVP0v6CGUzax+tTTbzAHUEZkFXXPauriv9qELsoW+/pYZLtkT2JC5I=
=eoyN
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Azza,
On 26.03.2014 16:46, Azza Ben Mosbah wrote:

Ok. Thank you. I will see that. A one more question please: the
SNR, is it in dB? and why the output for the SNR block is complex?
This is a pass-through block; it just forwards the complex samples and
updates the internal estimation. You can then get the SNR estimate
using the snr() method.

Greetings,
Marcus
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTMvfGAAoJEBQ6EdjyzlHtFnUH/RI0ipYZHzo6d/uY4nMLeJS0
AFUBc/3UbJfZ2nV160lECjjYA3XK4cL/0h5FOlR4r1Xe7n9wdlwlcNwcdzjDnI95
fQ1MrEhoG5C1tjlMyWr569xhfBpC1i3okRwSqA01NVouYU4FE8eHwuaQG9qJoaeo
7+DMgAWClVXTKxBzGP7RptCapD73ITFdL3oYOG7guhCFwelWyMVNPsvzvUmuEuTX
emiMBV3TPNYQBIxTXx0hrzmCVmjlrgtcBLB7ff2LM6IuE++X8L3iP8OPCvqfL9o=
=VmCN
-----END PGP SIGNATURE-----

On Wed, Mar 26, 2014 at 8:46 AM, Azza Ben Mosbah
[email protected] wrote:

Ok. Thank you. I will see that.
A one more question please: the SNR, is it in dB? and why the output for the
SNR block is complex?

Azza

Azza,

Please try to be more specific with your questions. Notice that there
are two blocks that calculate the SNR of an MPSK signal. Which one are

The documentation for the mpsk_snr_est_cc block is found here:

It says that this block passes all incoming data on the input stream
to the output stream. You can get the SNR by using the snr() function
to return the current estimate. And notice that in the constructor,
there is an argument:
“after this many samples, a tag containing the SNR (key=‘snr’) will be
sent”

So a stream tag is issued every so many samples containing the value
of the SNR estimate.

The other block is the probe_mpsk_snr_est_c, which is a sink:

Again, this has an snr() function. Instead of stream tags, this block
emits a message every so many samples. So you can attach a block that
receives messages to get the SNR estimates.

Tom

Ok. Thank you. I will see that.
A one more question please: the SNR, is it in dB? and why the output for
the
SNR block is complex?

Azza

View this message in context:
Sent from the GnuRadio mailing list archive at Nabble.com.

Hi All,

I checked this document, it gives an idea about SNR estimators in GNU
http://www.trondeau.com/blog/2011/12/30/snr-estimators.html
And I checked this Python file:

But, I need more details about the types of estimators (simple,
skewness,
2nd and 4th moment, svr). What are the differences between those
estimators?
And in which case should I consider each type?
Any help is appreciated.

Thank you,
Azza

View this message in context:
Sent from the GnuRadio mailing list archive at Nabble.com.

Ah, ok thank you.

Azza

View this message in context:
Sent from the GnuRadio mailing list archive at Nabble.com.

Thank you. That helps.

Azza

View this message in context: