GNU Radio Manual and C++ API Reference
The Free & Open Software Radio Ecosystem
gr::digital::snr_est_m2m4 Class Reference

SNR Estimator using 2nd and 4th-order moments. More...

#include <gnuradio/digital/mpsk_snr_est.h>

Public Member Functions

 snr_est_m2m4 (double alpha, double ka, double kw)
 ~snr_est_m2m4 () override
int update (int noutput_items, const gr_complex *input) override
 Update the current registers. More...
double snr () override
 Use the register values to compute a new estimate. More...
- Public Member Functions inherited from gr::digital::mpsk_snr_est
 mpsk_snr_est (double alpha)
virtual ~mpsk_snr_est ()
double alpha () const
 Get the running-average coefficient. More...
void set_alpha (double alpha)
 Set the running-average coefficient. More...
virtual double signal ()
 Returns the signal power estimate. More...
virtual double noise ()
 Returns the noise power estimate. More...

Additional Inherited Members

- Protected Attributes inherited from gr::digital::mpsk_snr_est
double d_alpha
double d_beta
double d_signal
double d_noise

Detailed Description

SNR Estimator using 2nd and 4th-order moments.

An SNR estimator for M-PSK signals that uses 2nd (M2) and 4th (M4) order moments. This estimator uses knowledge of the kurtosis of the signal (k_a) and noise (k_w) to make its estimation. In this case, you can set your own estimations for k_a and k_w, the kurtosis of the signal and noise, to fit this estimation better to your signal and channel conditions.

A word of warning: this estimator has not been fully tested or proved with any amount of rigor. The estimation for M4 in particular might be ignoring effectf of when k_a and k_w are different. Use this estimator with caution and a copy of the reference on hand.

The digital_mpsk_snr_est_m2m4 assumes k_a and k_w to simplify the computations for M-PSK and AWGN channels. Use that estimator unless you have a way to guess or estimate these values here.

Original paper: R. Matzner, "An SNR estimation algorithm for complex baseband signal using higher order statistics," Facta Universitatis (Nis), no. 6, pp. 41-52, 1993.

Reference used in derivation: D. R. Pauluzzi and N. C. Beaulieu, "A comparison of SNR estimation techniques for the AWGN channel," IEEE Trans. Communications, Vol. 48, No. 10, pp. 1681-1691, 2000.

Constructor & Destructor Documentation

◆ snr_est_m2m4()

gr::digital::snr_est_m2m4::snr_est_m2m4 ( double  alpha,
double  ka,
double  kw 



alphathe update rate of internal running average calculations.
kaestimate of the signal kurtosis (1 for PSK)
kwestimate of the channel noise kurtosis (2 for AWGN)

◆ ~snr_est_m2m4()

gr::digital::snr_est_m2m4::~snr_est_m2m4 ( )

Member Function Documentation

◆ snr()

double gr::digital::snr_est_m2m4::snr ( )

Use the register values to compute a new estimate.

Reimplemented from gr::digital::mpsk_snr_est.

◆ update()

int gr::digital::snr_est_m2m4::update ( int  noutput_items,
const gr_complex input 

Update the current registers.

Reimplemented from gr::digital::mpsk_snr_est.

The documentation for this class was generated from the following file: