Signal Processing Asked on December 14, 2021
I am using the following formula to calculate SNR of a real world complex baseband signal sampled at 1x Nyquist.
SNR = Rxy(tm)^2 / [ Px*Py - Rxy(tm)^2 ]
SNR (dB) = 10*log10(SNR)
where
Rxy(tm) = peak of the cross correlation at time delay, tm
Px = power in reference signal
Py = power in received signal
I verified proper implementation of the formula using simulated real-valued and complex-valued signals with and without noise.
On real data the SNR estimates using the above formula are too low (by 10.0+ dB). I manually verified the actual SNR a few different ways. I used spectral analysis to visually measure the signal power to the noise floor. I also measured the signal power to noise power (when signal is off), and both of those techniques give me an answer closer to what I expect.
I am flummoxed as to why this equation is not working on real-world signals. Do I need to take the DC bias (mean of data) into account and add that back to the SNR estimate? If I do that then I get values closer to what I expect.
Reference: Formula came from Principles of Communications (Tranter, Ziemer) textbook
The peak of the cross correlation should be the transmit signal power times the channel's attenuation.
Realizing that, it's really just
begin{align} text{SNR} &= frac{P_text{signal}}{P_text{noise}}\ &= frac{P_text{signal}}{P_text{received} - P_text{signal}}\ &= frac{P_text{tx}cdot a_text{channel}}{P_text{received} - P_text{tx}cdot a_text{channel}}\ &= frac{P_{crosscorr,max}}{P_text{received}-P_{crosscorr,max}}, end{align}
which is
=Rxy(tm)^2 / (Py-Rxy(tm)^2)
in your notation.
So, either that book is wrong or you're missing something there.
Answered by Marcus Müller on December 14, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP