Data Products Final Project

December 28, 2018

A Signal-to-Noise Ratio (SNR) Visualization Utility

Introduction

  • This utility helps to get a sense of what a simple signal would look like at various signal-to-noise ratio (SNR) levels.

  • SNR is defined as: \[ SNR = 10*log10((Power of Signal)/(Power of Noise)) \], in decibels (dB)

  • Typically, in communications settings, the noise being added is Gaussian distributed

Example Calculations

The power of the sine wave \( Asin(wt) \) is \( A^2/2 \). To make things easy, just let \( A=1 \), then we say the power in our signal is \( Ps = 0.5 \).

If we add noise with equal power to the signal, then the SNR is a low value : \( SNR=10*log10(0.5/0.5) = 0 \).

If we add noise with much lower power than the signal, then the SNR will be a high value : \( SNR=10*log10(0.5/0.0005) = 30 \).

Pn <- c(5, 0.5, 0.05, 0.005, 0.0005, 0.00005)
Ps <- 0.5*rep(1,length(Pn))
snr <- 10*log10(Ps/Pn)
data <- data.frame(Ps=Ps, Pn=Pn, SNR=snr)
knitr::kable(data, caption = "Example SNR Values")
Ps Pn SNR
0.5 5e+00 -10
0.5 5e-01 0
0.5 5e-02 10
0.5 5e-03 20
0.5 5e-04 30
0.5 5e-05 40

But what does this actually look like?

Example Plot

A very high SNR makes the signal look very clean:

plot of chunk unnamed-chunk-2

A very low SNR makes the signal almost unrecognizable:

plot of chunk unnamed-chunk-3

Run the Utility!!

You can play around with visualizing different levels of SNR with the utility at this site