You can use GNURadio to demonstrate how decimation improves SNR. You get a 3 dB increase in signal to noise ratio every time you double the decimation rate.
Reading about a process is one thing. Seeing it actually happen is another. Previously, I have written about the magic of processing gain in software defined radio. If you low-pass filter the sampled bandwidth, and then decimate, you get processing gain. Decimation means throwing away data to reduce bandwidth. In theory, every time you double your decimation, you get a 3 dB reduction in noise with no reduction in signal.
You can test this for yourself in GNURadio. The flow diagram above shows how to do this. Or you can just take a look at this short learning video. Here is the source code if you would like to use it.
In this GNURadio model, we first create a noisy signal. You do this by making a signal source and then adding Gaussian noise to the signal. Controls in the model let you vary the amplitude of both signal and noise. What you end up with is a noisy signal comparable to what you would actually hear on the radio.
Then, you run the noisy signal through a decimating FIR filter. The low-pass filter is set to give enough bandwidth to pass the original signal. You can experiment with various decimation rates. Finally, you can watch the improved SNR magically appear on the screen.
Decimation Improves SNR – 3 dB per Octave
An octave is a doubling. If you double your decimation rate from 1 (none) to 2, the signal remains constant but noise reduces by 3 dB. When you increase decimation from 2 to 4, noise decreases by 6 dB while signal level remains constant.
When you watch the video, you will see me experimenting with decimation rates of 16 and 64. In theory, these should provide dynamic range improvement of 12 and 18 dB, respectively. And since the noise in the model is Gaussian, this improvement actually happens.
If you are experimenting with RTL-SDR in GNURadio, make sure that you use decimation to improve the performance of this cheap little radio.