Range-Doppler Processing
Definition: Range-Doppler Processing
Range-Doppler Processing
A pulsed radar transmits pulses and forms a range-Doppler map:
- Fast time (within each pulse): matched filtering for range
- Slow time (across pulses): FFT for Doppler velocity
def range_doppler_map(rx_pulses, tx_chirp):
M, N = rx_pulses.shape
rd = np.zeros((N, M), dtype=complex)
for m in range(M):
rd[:, m] = pulse_compress(rx_pulses[m], tx_chirp)[:N]
rd = np.fft.fftshift(np.fft.fft(rd, axis=1), axes=1)
return np.abs(rd)**2
Definition: Cell-Averaging CFAR Detection
Cell-Averaging CFAR Detection
CFAR (Constant False Alarm Rate) sets an adaptive threshold based on the local noise level:
- For each cell under test (CUT), average the power in surrounding training cells (excluding guard cells)
- Multiply by a threshold factor set from the desired
- Declare detection if CUT power exceeds the threshold
def cfar_1d(signal, n_train, n_guard, pfa):
N = len(signal)
n_train_total = 2 * n_train
alpha = n_train_total * (pfa**(-1/n_train_total) - 1)
detections = np.zeros(N, dtype=bool)
for i in range(n_guard + n_train, N - n_guard - n_train):
train_cells = np.concatenate([
signal[i-n_guard-n_train:i-n_guard],
signal[i+n_guard+1:i+n_guard+n_train+1]
])
threshold = alpha * np.mean(train_cells)
if signal[i] > threshold:
detections[i] = True
return detections
Definition: Doppler/Velocity Resolution
Doppler/Velocity Resolution
The velocity resolution from pulses with PRI is:
The maximum unambiguous velocity is:
Theorem: CFAR Threshold Factor
For exponentially distributed noise (power after square-law detection) with training cells and desired :
This maintains constant regardless of the noise level.
CFAR adapts the threshold to the local noise floor. More training cells give a more accurate noise estimate and better control.
Theorem: Range-Doppler Ambiguity
The unambiguous range and velocity are inversely related:
Fast PRF ( small) gives large but small .
You cannot simultaneously have fine Doppler resolution and unambiguous long-range detection with a single PRF.
Theorem: Coherent Integration Gain
Coherently integrating pulses provides processing gain:
or dB improvement in SNR. Combined with matched filter gain , the total processing gain is .
Example: Building a Range-Doppler Map
Simulate a radar with 128 pulses and build a range-Doppler map with two targets at different ranges and velocities.
Implementation
# See code supplement ch25/python/range_doppler.py
Range-Doppler Map
Build and visualize a range-Doppler map with adjustable target parameters.
Parameters
CFAR Detection Demo
Apply CFAR detection to a range profile with adjustable Pfa.
Parameters
Quick Check
What is the main advantage of CFAR over a fixed threshold?
Higher detection probability
Maintains constant false alarm rate in varying noise
Better range resolution
Lower computational cost
CFAR adapts the threshold to the local noise level.
Common Mistake: Ignoring PRF Ambiguity
Mistake:
Choosing PRF for maximum range without checking whether the Doppler ambiguity () is sufficient for the scenario.
Correction:
Check both: and . Use staggered PRF or waveform diversity to resolve ambiguities.
CFAR
Constant False Alarm Rate: an adaptive detection algorithm that maintains a fixed false alarm probability in varying noise/clutter.
PRF / PRI
Pulse Repetition Frequency / Interval: the rate at which radar pulses are transmitted; determines unambiguous range and velocity.
Radar Waveform Comparison
| Property | Simple Pulse | LFM Chirp | OFDM Radar |
|---|---|---|---|
| Range resolution | |||
| Processing gain | 1 | ||
| PAPR | 0 dB | 0 dB | ~10 dB |
| Doppler sensitivity | High | Moderate | Low |
| Comms integration | No | No | Yes (JCAS) |