How to Detect and Compensate Doppler Shift
In this article, we learn how to estimate doppler shift in a signal and also how to compensate it.
In the previous article What is Doppler Shift , we learnt that the Doppler shift introduces a frequency offset to the transmitted signal caused by the relative motion between the transmitter and the receiver. In a real-world receiver, the received signal will be the noisy, shifted version arriving at your antenna.
To demodulate data correctly, a receiver must perform two critical tasks: Detection (estimating how much the frequency has shifted) and Compensation (undoing that shift so the signal is centered back at the expected frequency).
Detection: The FFT Method
The most common way to detect a Doppler shift is by analyzing the signal in the frequency domain. By taking the Fast Fourier Transform (FFT) of the received signal, we can identify the “bin” where the signal’s energy is concentrated.
If we know our signal was transmitted at , but the FFT shows a peak at , the estimated Doppler shift is:
Frequency Resolution
Your ability to detect small shifts depends on your Frequency Resolution (). This is determined by your sampling rate () and the number of points in your FFT ():
To detect a subtle 12 Hz shift from a walking pedestrian, you need a much larger (a longer observation window) than you would to detect a 10 kHz shift from a supersonic aircraft.
Compensation: Frequency Derotation
Once we have estimated , we need to “undo” the damage. Since a frequency shift is essentially a phase that increases linearly over time, we can compensate for it by multiplying the received signal by a complex exponential with the negative of the detected shift.
For a complex baseband signal , the compensated signal is:
This process is known as Frequency Derotation. It effectively “unwinds” the extra rotation added by the Doppler effect, bringing the signal back to its intended baseband position.
Figure 1 — Doppler shift estimation and compensation
The figure above illustrates the two-step process of recovering a signal affected by Doppler shift. In the Frequency Domain (top), we perform detection by identifying the spectral peak of the received signal (Green). While the signal was expected at Hz, the FFT reveals a clear shift to Hz. By calculating the difference, we estimate a Doppler shift of Hz.
In the Time Domain (bottom), we apply compensation by “rotating” the received signal by the estimated offset. Once the offset is applied, the compensated signal is close to the original transmitted signal.