How to calculate Signal to Noise Ratio

I need to compare the signal to noise level of two sensors.

Is there some standardized way of doing this? Wikipedia & ehow and the rest of the internet seem to magically assume I already know the power of the noise & the power of the signal.

I could use a filter to seperate high-frequency parts of the signal from low frequency parts of the signal and then compare the magnitude of these two values. However, if I did this I can just randomly change the parameters of the filter and come up with either really good or really bad results.

So my question stays: Is there a standardized way of measuring signal to noise ratio of a given sensor/circuit?

thanks p.

First of all, can you assume that the noise is white?

no. I dont know anything about the noise.

in both cases its an analogue sensor connected to a 10 bit AD converter.

I guess I could just measure the noise without changing the input to the sensor. This should give me a pure noise signal. I can then take the root mean square of that... and then what? Or I calculate the distribution of the noise and then... ?

The other problem is: how do I measure the signal without the noise? I can apply a low-pass filter, but by doing so I manipulate the signal ...


lets just assume that the noise is white. what then?


I am pretty sure I can find a method of calculating signal to noise ratio. I am just trying to figure out if there is a scientifically "correct" way of doing it.

can anyone help me with this? some recommended reading or something?

The standard way I think to measure a signal in the noise is to compare with a signal of known power - ie you take a strong signal, put through a programmable attentuator and compare to the signal of interest. You can measure the strong signal accurately and use a calibrated attentuator - so the problem is reduced to one of comparison (you may want to add synthetic noise too).

If you haven’t read the relevant section of “The Art of Electronics” then do so, its a very place to start for practical issues.

It can be a rather complex measurement as bandwidth has a bearing on noise power.


You cannot measure S/N of a sensor, I think. You may measure a S/N (or (S+N)/N)) of an equipment which measures the sensor's output (ie voltage). The S/N specifies how much the noise of the equipment contributes to the actual signal at its input. Thus it specifies the equipment (ie. an amplifier, an adc, a receiver) sensitivity for a specific S/N ratio (ie 10uV for 10dB S/N). You may measure a noise profile of a sensor, though. For example a photodiode - you can measure a power spectral density (at specific conditions) of the noise current of the photodiode (ie. nA/sqrt(Hz)) - ie. between 1Hz and 1kHz..

thanks pito. that makes sense.

Will average/(standard deviation) give you some indication?

Will average/(standard deviation) give you some indication?

I think it would be:

+/-1.96*SD is the 95% confidence interval for Gaussian distributed data.

At least for the electrical part of your system you could use LXSNDTEST, available from Sourceforge. The recent versions can interface to an ATmega328. Have a look at the report ATmega328Accuracy.pdf in the LXARDOSCOPE project, also at Sourceforge. The report shows spectra and parametric results like THD, SNR, ENOB.

rather aged thread, but the way to do it is to “back into” the characteristics of the sytem via a “lock-in” or "multi-channel averaging system. The noise you have is inseparably wedded to your signal source
and overall setup.
IF your SNR is >1 to begin with, then just measure the noise and signal + noise separately.
IF your signal is weak and buried in noise, SNR << 1, then you have to take multiple measurements, add them, and measure the SD of the fluctuations. If you can do this wothout signal (difficult for a star, etc.), then you can get a “noise signature,” which is better but not essential.
THEN take a large number of measurements, add them together, and look for an emerging signal. Now, the noise increases as the Square Root of the noise value, but the signal increases linearly. So suppose the signal is 1 and the noise is 999 - signal buried in noise. Now do 10,000 measurements - the signal will be 10,000 and the noise will be the SQRT of 10,000,000 or 3100. This can be compared with the “noise only” measurement series as well.
SO then you can back-track and estimate a SNR corresponding to 1/1000.
This is the general approach used on the Hubble telescope, and its difficult to short-cut it. The good news is that you have to go down this road anyway if you have a very eak signal.