[QEX]     [GNU radio NC]




Noise Cancelling using GNU Radio Companion


The noise cancelling is implemented in a “one mouse click” like way as described in the March/April 2019 issue of QEX.

However because the mouse cursor location is not available in GNU radio companion blocks the “one mouse click noise canceller” is implemented by using two sliders for setting the Phase difference and amplitude Ratio.

=> The GNU radio model is in NoiseCancelling_v1_zip (including demo audio files).


What is needed for noise cancelling:

-        Two identical phase coherent receivers like the ANAN200D, the SDRplay RSPduo, Flexradio 6600/6700 or Elecraft K4  * See Note 1 at the end of the page

-        The stereo line output audio signal of both receivers with the AGC switched off

-        The stereo audio PC/laptop input via e.g. an external soundcard (fs=48kHz)

-        GNU Radio Companion

-        Two receiving antennas

The implementation also supports the use of an audio file as input source. Four demo files are included. Two for noise cancelling, one for showing frequency selective fading and one with only noise.

Note: The model will run without receivers.


For effective noise cancelling both antennas have to receive the man-made noise source (QRM).

In the QEX article two orthogonal identical active small receiving loops are used.

However the main transmit antenna can also be used in combination with e.g. an active wip antenna. The antenna with the strongest man-made noise is assumed to be the noise pickup antenna. For best performance the amplitude level of the noise source on the wip antenna should be strongest.



The plot displays for the strongest frequency components (FFT bins) in the audio band the amplitude ratio P (X axes) and the phase difference P (Y axes) between the signals of the two antennas. Each dot represents a measurement of one frequency component. P and R are the coordinates in the plot.



It is not practical to use the amplitude ratio directly. If the amplitude of antenna A is |A| and of antenna B is |B| the ratio is set by:


This allows one of the signals to be zero.



When only noise is present all dots in the plot are randomly spread over the plot (assuming both antennas have different polarization and the same noise floor level as with the two orthogonal loops!):



When a single man-made noise source is present the dots will be concentrated around the corresponding phase difference P and amplitude ratio R. See next plot. With increasing amplitude of the man-made noise source the dots will be increasingly concentrated.

This also applies to signals, because a man-made noise source in fact is also a signal.



The red dot represents the phase P and ratio R setting.

When hovering the mouse cursor over the plot the amplitude ratio R and phase difference P  values are shown. This helps setting the sliders for the phase difference and amplitude ratio.

The green dots are markers for 0°, 90°, 180°, 270° and 360° phase difference.


The gainRX and gainFile set the gain for the input of the receivers and for the input of the audio file.

The Phasing selection allows for inverting the noise cancelling and so enhancing the noise source (or a signal).

The A/B indicator shows the ratio setting as the ratio in dB’s between the antenna A and antenna B amplitudes.


The plotting for the noise cancelling setting information is done in the frequency domain.

The noise cancelling function itself is done in the time domain to minimize latency.

The next three screens snow the top level:




The top level is called NoiseCancelling_v1.

Hierarchical blocks are:

FFT_overlap_v1, NC_function_v1, Bulk_Space_v1, Bulk_space_plot_v1, Compare_v1 and Var2Vec_v1.



* Note 1

No equalizing function is implemented to correct for differences between the two receivers of the SDR radio. Assumed is that both receivers are identical and settings are equal. E.g. in PowerSDR filtering can be set different for both receivers. Also soundcard channels will not be exactly equal. Any difference reduces the achievable depth of the noise cancelling!

Equalizing can be done by e.g. adaptive filters and applying a noise source to the inputs of both receivers.


Note 2

Normally much different antennas are used for noise cancelling with different antenna factors.

A gain balancing setting will be needed to equal the signal levels. This is not implemented in the model, but can be added easily.


Note 3

The plot is also a measurement tool, because signals and identifiable noise sources reveal itself as a cloud of dots. The plot shows:

- if it is a suitable combination of antennas

- if the antenna combination is behaving as intended

- if signals overlap with the noise source and both are cancelled

- polarization behavior of signals




I have used the following links for installing GNU radio companion:








Last update: June 25, 2019