[Top][All Lists]

## Re: [Discuss-gnuradio] m2m4 SNR estimator off by 3 dB

 From: Tom Rondeau Subject: Re: [Discuss-gnuradio] m2m4 SNR estimator off by 3 dB Date: Thu, 28 Aug 2014 08:51:47 -0700

On Thu, Aug 28, 2014 at 7:04 AM, Tom Rondeau wrote:
On Wed, Aug 27, 2014 at 9:33 AM, Jared Dulmage wrote:
It appears that the MPSK m2m4 SNR estimator has an extra factor of 2.

double
mpsk_snr_est_m2m4::snr()
{
double y1_2 = d_y1*d_y1;
return 10.0*log10(2.0*sqrt(2*y1_2 - d_y2) /
(d_y1 - sqrt(2*y1_2 - d_y2)));
}

where d_y1 and d_y2 are the running 2nd and 4th moments of the input, respectively.

The 2.0* is not present in the estimate _expression_ from the reference (Pauluzzi and Beaulieu eq. 39).

The 3 dB offset can also be seen by generating a signal (say random BPSK) with AWGN, measuring the signal and noise powers separately while estimating the SNR via the m2m4 on the sum.

It's an easy fix, I just wanted to get verification and notify other users.

Thanks,
Jared.

Hi Jared,

I'd have to review the paper again, but I suspect you're right. I was using this estimator just the other day and scratching my head about the results. I was on a plane, though, and was really focused on something else.

Thanks!

Tom

Just tested this and it looks fine the way it is. Are you doing real or complex signals? The estimators are designed to work with complex numbers, so that might be the difference you're seeing. I just have a simple simulation that I can switch between BPSK and QPSK (both complex signals, though). I use the MPSK measurement block and calculate the power of the signal and noise separately and output that to a number sink. With the current method, I see the same SNRs on both paths.

There is also the gr-digital/examples/snr_estimators.py example you can explore to compare them.

Tom