How to reduce noise floor and improve SNR by employing cross-correlation techniques

Ultra-sensitive voltage measurements is a crucial requirement for applications such as quantum device characterization [1]. Weak signals become easily obscured by thermal noise, especially that coming from the measurement apparatus; this increases the noise floor [2] and determines a lower Signal-to-Noise ratio (SNR).

The cross-correlation measurement technique offers a simple and effective way to improve the SNR. This method can reduce unwanted thermal noise components by a factor of 10 and more [2]. A recent application note carried out at the University of Lancaster [3], relied on two synchronized MFLI Lock-In Amplifiers as digitizers (with the MF-DIG digitizer option) to read signals and cross-correlate with Python code.

In this blog post, we show how to implement the cross-correlation method with a single UHFLI Lock-In Amplifier with the UHF-DIG digitizer option: the setup takes advantage of two fully synchronized input channels in one box, along with the ability to measure up to 600 MHz. Without the need for Multi-Device Synchronization (MDS), this reduces overall measurement time taken and simplifies the Python code. You can now try this out with your UHFLI using the code attached here (MFLI code to be included very soon).

Basic principle

The cross-correlation technique is based on the simultaneous measurement of two signals \(V_1(t)\) and \(V_2(t)\), both consisting of a common signal component \(V_s(t)\). Both measured signals contain unwanted noise components \(V_{n1}(t)\) and \(V_{n2}(t)\) naturally due to the distinctive thermal noise present in their respective signal paths. By applying cross-correlation of the two measured signals, any uncorrelated noise signals will be eliminated; \(V_{n1}(t)\) and \(V_{n2}(t)\) vanishes.

$$V_1(t) = V_s(t) + V_{n1}(t) \tag{1.1}$$

$$V_2(t) = V_s(t) + V_{n2}(t) \tag{1.2}$$

In frequency-domain cross-correlation, perform the Fast Fourier Transform (FFT) of both measured signals to get \(F[V_1(t)]\) and \(F[V_2(t)]\). Take the complex conjugate of either FFT signal, and then multiply the two FFT signals to get the cross-correlated spectrum \(S(f)\) (equation \(2.1\)). Repeating the measurements and averaging the cross-correlated spectrum further attenuates the uncorrelated noise source, consequently reducing the overall voltage noise level.

$$S(f) = F[V_1(t)]^* \times F[V_2(t)] \tag{2.1}$$

$$S(f)_{avg} = \frac{\sum_{N}^{n}S(f)}{N} \tag{2.2}$$

Cross-correlation validation

Here we demonstrate a single cross-correlation measurement by reproducing the example shown in figure 1. The UHFLI generates f (square wave) and g (saw-tooth wave) with the UHF-AWG option, and also read these signals. Figure 2 depicts the wiring of this setup.

Figure 1: Cross-correlation of square and saw-tooth wave result in f*g or g*f (depends on which signal conjugate is taken) [4]

Figure 2: Wiring diagram to send the two generated signals back into the UHFLI inputs

Figure 3: The two time-series waves captured with triggering using the LabOne Scope module

We apply the FFT and cross-correlate the two captured waves (Fig. 3) in Python to get a new spectrum. To observe our cross-correlation result as a wave, we apply the inverse-FFT and plot in the time domain (Fig. 4). We can now see the result matches the expected output of the example (Fig. 1); affirming the validity of our cross-correlation code used.

More importantly, understanding why the result (Fig. 4) is a triangular-like waveform explains how cross-correlation acts like a filter. A saw-tooth wave spectrum is composed of both odd and even harmonics [5], and by contrast, a square wave spectrum has only odd harmonics [6]. The harmonic amplitudes of both spectrums are \(\frac{1}{n}\), where \(n\) is the \(n\)th harmonic. When cross-correlating; the dot product of both spectrums (equation \(2.1\)) cancels the even harmonics but filters the odd harmonics now with amplitudes of \(\frac{1}{n^{2}}\). From basic signal processing knowledge, a spectrum consisting of only odd harmonics at \(\frac{1}{n^{2}}\) amplitude is a triangle wave [7], hence why our result is triangular (with modified Fourier coefficients).

Figure 4: Cross-correlation waveform result for both cases when complex conjugate of either f or g is taken 

Noise reduction and SNR

We now wish to test how much the UHFLI noise floor can be reduced and, consequently, by how much the SNR increases. The input voltage noise of a single channel in the UHFLI is 4 nV/√Hz [8]; intrinsically from components such as ADC, input amplifier, filter. Let’s see how much of this noise from two separate channels can be cross-correlated and reduced.

First, we generate a sinusoidal signal at 133.97 MHz in two separate experiments at 1 mVpk and 10 mVpk, which undergoes 60 dB attenuation and then split into the two input channels. Figure 5 depicts the described wiring setup.

Figure 5: Setup for sending the signal from the UHFLI, attenuate it and split it back into two inputs

We set the scope module to sample the two signals at 1.8 GSa/s and acquire 262144 time samples in each channel by using the digitizer to stream to the PC (using Python API). The Python code performs cross-correlation of the acquired samples and obtains its voltage spectral density. This process then repeats and averages the cross-correlated spectrum up to 10times for both output amplitudes (1 mVpk and 10 mVpk). Figure 6 below shows the contrast between the averaged cross-correlated and single-channel spectrums, while zoomed in at the frequency of the peak we mish to measure.

                                                                                                                                                                  (b)                                                                                                 (a)

Figure 6: (a) The larger output signal 10 mVpk results in a more prominent peak above the noise floor in both single-channel signal and cross-correlated signal. (b) As for a smaller output signal 1 mVpk, the peak is now smeared by the noise floor and less prominent, however, cross-correlating uncovers the signal.

We see a reduction of the noise floor by a factor of ~8 (Fig. 6) between the cross-correlated and single-channel spectrums at 104 averages, and figure 7 characterizes how increasing the number of averages affect the noise floor level in both cases.

The peak for the 10 mVpk signal output in figure 6a is easy to distinguish in both single and cross-correlated spectrums. Thus, the SNR values are much higher than 1 in figure 8a and continues improving with more cross-correlation averaging. However, for the 1 mVpk signal output (Fig. 6b), the noise floor of the single-channel smears the peak resulting in an SNR of ~1. But the reduced noise level by cross-correlating uncovers this peak leading to an SNR improvement by a factor of 4 at 104 averages (Fig. 8b). Additionally, now we can measure the real peak amplitude since the unwanted channel noise also reduces at the frequency of the peak.

                                                                                                                                                                  (b)                                                                                                   (a)

Figure 7: (a) The noise floor reduction with averaging for both the single-channel and cross-correlation for the 10 mVpk signal not buried by noise floor (b) Noise floor reduction for the smaller output signal 1 mVpk shows the same behaviour as in (a)

                                                                                                                                                               (b)                                                                                                  (a)

Figure 8: (a) Effect of averaging in SNR for 10 mVpk output signal in both single-channel and cross-correlation averaging (b) SNR behaviour for 1 mVpk output signal: we see the SNR starts to improve after 10 averages

We see significant improvements in the SNR in both considered cases when the signal is nearby or below the noise floor. Figure 8(a) shows the SNR reaches up to 50 for the 10 mVpk signal, an improvement by a factor of ~10.


In conclusion, cross-correlation can be implemented as a solution for eliminating specific noise sources by parallelising the measurement. However, in real-life applications, the measurement time taken can be a critical requirement and this operation can be time-consuming with 104 averages taking nearly 30 minutes. But the results in figures 6 and 7 show even 103 averages is sufficient to improve the SNR significantly taking only ~2 minutes to perform with the current code.

We have shown one application in this blog when the channel source noise affects the strength of the signal measured. As a result, a noise floor sensitivity of ~0.5 nV/√Hz (Fig. 7) was achieved with the UHFLI. In previous work, the MFLI noise floor was also reduced from 2.5 to ~0.5 nV/√Hz using two MFLIs [3]. This work by Dr Jonathan Prance and Dr Michael Thompson served as the main inspiration of this blog who I am grateful to, and Dr Mark Buitelaar for the many discussions on this topic which took place.

I hope that you are inspired by this blog and already thinking about how this can be implemented in your setup. Get in touch with us if you need help or have questions, and we would be interested to hear your ideas which can further enhance this process or speed up measurement times! We will see you in the next blog where we plan to further explore the power of the cross-correlation technique.


[1] Fluctuations Phenomena in Low Dimensional Conductors

[2] Noise reduction by parallel cross-correlation measurements

[3] Measuring small signals accurately – A Practical guide

[4] Cross-correlation Wikipedia entry

[5] Sawtooth waves

[6] Square and Rectangle Waves

[7] Triangle Waves

[8] UHF User Manual

Jithesh is a PhD student at University College London in the Quantum Devices group of Mark Buitelaar. His PhD studentship is partially supported by Zurich instruments through EPSRC CASE Programme. He is currently working from Zurich with Jelena Trbovic and Niels Haandbaek on several projects pertaining to quantum state control and measurements. His background is in Computer Engineering with a focus on FPGAs, Computing Architecture and Digital Signal Processing. Recently joined the Quantum Computing physics world and specifically working with spin-qubits using quantum dots, carbon-nanotubes, error-correction and readout techniques.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>