Exercises
ex-sp-ch25-01
EasyGenerate an LFM chirp with MHz and s. Plot the instantaneous frequency versus time.
Implementation
B, Tp, fs = 50e6, 10e-6, 200e6
t = np.arange(0, Tp, 1/fs)
chirp = np.exp(1j * np.pi * B/Tp * t**2)
freq = np.diff(np.unwrap(np.angle(chirp))) * fs / (2*np.pi)
ex-sp-ch25-02
EasyCompute range resolution for bandwidths of 10, 50, 100, and 500 MHz.
Calculation
for B in [10e6, 50e6, 100e6, 500e6]:
print(f"B={B/1e6:.0f}MHz: dR={3e8/(2*B):.2f} m")
ex-sp-ch25-03
EasyApply matched filtering to a chirp echo at range 200 m and verify the peak location corresponds to the correct range.
Implementation
tau = 2*200/3e8; idx = int(tau*fs)
rx = np.zeros(int(20e-6*fs), dtype=complex)
rx[idx:idx+len(chirp)] = chirp
mf = np.correlate(rx, chirp, mode='full')
ex-sp-ch25-04
EasyCompute the processing gain () and convert to dB for chirps with .
Calculation
for BT in [10, 100, 1000]:
print(f"BT={BT}: gain={10*np.log10(BT):.1f} dB")
ex-sp-ch25-05
EasyImplement 1D CA-CFAR and apply it to a range profile with one target.
Implementation
# See code supplement ch25/python/cfar_detection.py
ex-sp-ch25-06
MediumGenerate a range-Doppler map with 64 pulses and apply matched filtering. Place two targets at different ranges and velocities.
Implementation
# See code supplement ch25/python/range_doppler.py
ex-sp-ch25-07
MediumCompare the sidelobe levels of matched filtering with no window, Hamming, and Taylor ( dB) windows.
Approach
Apply each window to the reference chirp before correlation.
ex-sp-ch25-08
MediumImplement the Doppler processing chain: collect pulse returns, apply matched filtering, then FFT across pulses. Measure velocity accuracy.
Implementation
# See code supplement ch25/python/range_doppler.py
ex-sp-ch25-09
MediumImplement OS-CFAR (ordered-statistics CFAR) and compare with CA-CFAR in the presence of a strong interferer in the training cells.
Approach
OS-CFAR selects the -th smallest training cell instead of averaging, making it robust to interfering targets in the training window.
ex-sp-ch25-10
MediumCompute the ambiguity function of an LFM chirp and show the range-Doppler coupling (the ridge tilts with Doppler).
Implementation
# See code supplement ch25/python/ambiguity_function.py
ex-sp-ch25-11
HardImplement the complete OFDM radar processor from Chapter 22's framework with 2D CFAR detection. Simulate 3 targets and verify detection.
Implementation
# See code supplement ch25/python/ofdm_radar_processor.py
ex-sp-ch25-12
HardImplement a stepped-frequency radar: transmit pulses at different frequencies and synthesize a wideband range profile via IFFT.
Approach
Each pulse is a narrowband signal; IFFT across frequencies gives wide effective bandwidth.
ex-sp-ch25-13
HardImplement moving target indication (MTI): subtract consecutive pulses to cancel stationary clutter and detect moving targets.
Approach
MTI is a two-pulse canceller: .
ex-sp-ch25-14
ChallengeImplement a complete FMCW radar system for automotive sensing: continuous chirp transmission, dechirp mixing, range-FFT, Doppler-FFT, and CFAR.
Approach
FMCW uses continuous chirps; the beat frequency after mixing gives range.
ex-sp-ch25-15
ChallengeBuild a joint communication-radar simulator: OFDM symbols carry both user data and serve as radar waveforms. Measure BER and radar detection probability simultaneously.
Approach
Combine the OFDM system from Ch22 with the radar processor from this chapter.