1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-12-15 04:30:33 +00:00

Adding missing factor in CN0 estimator

This commit is contained in:
Javier Arribas 2019-05-21 12:10:22 +02:00
parent dddf6dedb3
commit 8b77576166

View File

@ -60,11 +60,12 @@
* *
* The SNR value is converted to CN0 [dB-Hz], taking to account the coherent integration time, using the following formula: * The SNR value is converted to CN0 [dB-Hz], taking to account the coherent integration time, using the following formula:
* \f{equation} * \f{equation}
* CN0_{dB}=10*log(\hat{\rho})-10*log(T_{int}), * CN0_{dB}=10*log(\hat{\rho})-10*log(2*T_{int}),
* \f} * \f}
* where \f$T_{int}\f$ is the coherent integration time, in seconds. * where \f$T_{int}\f$ is the coherent integration time, in seconds.
* *
*/ */
float cn0_svn_estimator(const gr_complex* Prompt_buffer, int length, float coh_integration_time_s) float cn0_svn_estimator(const gr_complex* Prompt_buffer, int length, float coh_integration_time_s)
{ {
float SNR = 0.0; float SNR = 0.0;
@ -80,7 +81,7 @@ float cn0_svn_estimator(const gr_complex* Prompt_buffer, int length, float coh_i
Psig = Psig * Psig; Psig = Psig * Psig;
Ptot /= static_cast<float>(length); Ptot /= static_cast<float>(length);
SNR = Psig / (Ptot - Psig); SNR = Psig / (Ptot - Psig);
SNR_dB_Hz = 10.0 * std::log10(SNR) - 10.0 * std::log10(coh_integration_time_s); SNR_dB_Hz = 10.0 * std::log10(SNR) - 10.0 * std::log10(2.0 * coh_integration_time_s);
return SNR_dB_Hz; return SNR_dB_Hz;
} }