快时间域 (Range FFT) 与 慢时间域 (Doppler FFT) 深度详解

快时间域 (Range FFT) 与 慢时间域 (Doppler FFT) 深度详解

目录

  1. 前言
  2. 雷达信号模型与基本概念
  3. 快时间域 (Range FFT)
    1. 快时间域概述
    2. 数学推导
    3. 常见处理细节
  4. 慢时间域 (Doppler FFT)
    1. 慢时间域概述
    2. 数学推导
    3. 速度模糊与分辨率
    4. 常见处理细节
  5. Range-Doppler 成像 (2D FFT)
  6. 总结
  7. 代码

前言

在现代雷达系统(无论是脉冲体制还是FMCW体制)中,普遍会进行两次关键的快速傅里叶变换 (FFT) 处理:

  1. 快时间域 (Fast Time) 的 Range FFT:用于提取目标的距离信息;
  2. 慢时间域 (Slow Time) 的 Doppler FFT:用于提取目标的速度(多普勒频移)信息。

这两个步骤是雷达信号处理中十分重要的环节。我们将用尽量通俗的方式讲解它们各自的含义、数学原理、处理细节以及如何结合得到雷达的距离-速度分布(Range-Doppler Map)。


雷达信号模型与基本概念

  1. 脉冲/Chirp

    • 在脉冲多普勒雷达中,每次发射一个脉冲,脉冲之间的间隔称为脉冲重复周期 T PRI T_{\text{PRI}} TPRI
    • 在FMCW雷达中,每次发射一个线性调频的 Chirp 波形,chirp 之间的间隔称为帧或脉冲重复周期 (取决于具体系统设置)。
  2. 快时间 (Fast Time)
    指的是一次脉冲或一次Chirp发射-接收周期内,对回波信号的采样序列。采样间隔通常较短,对应高采样率,体现了与距离相关的信息。

  3. 慢时间 (Slow Time)
    指的是多个脉冲/Chirp 之间的采样序列。通常其采样率远小于快时间采样率(因为脉冲重复频率 PRF 或 Chirp 重复频率 CRF 通常低于快时间采样率),体现了与目标运动(多普勒频移)相关的信息。

  4. 多普勒频移
    当目标相对雷达有径向速度 v v v 时,返回的回波信号频率会产生偏移 Δ f \Delta f Δf。对于脉冲多普勒雷达,偏移量与PRF、脉冲序列的相位累积有关;对于FMCW雷达,除了快时间域的差频外,还会在慢时间域体现多普勒调制。


快时间域 (Range FFT)

快时间域概述

  • 采样对象:一个脉冲(或一个Chirp)内的中频信号。
  • 主要目的:获取目标的距离信息。
  • 处理方式:对一次脉冲/Chirp接收段进行FFT,即 Range FFT。

对于FMCW雷达,通常一次Chirp采样下来的信号长度为 N N N,我们对这段长度为 N N N 的快时间信号做 FFT,即得到距离向的分布(因为 FMCW 会将目标距离映射为差频或距离频率)。
对于脉冲多普勒雷达,如果发送脉冲带宽较宽,则也可以通过在脉冲内部对中频信号进行高速采样,做FFT得到距离像。

数学推导

假设对一次脉冲/Chirp采样得到的离散信号为 x [ n ] x[n] x[n],其中 n = 0 , 1 , … , N − 1 n = 0, 1, \dots, N-1 n=0,1,,N1。对于FMCW,可理解为混频并低通滤波后的基带信号。则
X [ k ] = ∑ n = 0 N − 1 x [ n ]   e − j 2 π N k n , k = 0 , 1 , … , N − 1. X[k] = \sum_{n=0}^{N-1} x[n] \, e^{-j \frac{2\pi}{N} k n}, \quad k = 0, 1, \dots, N-1. X[k]=n=0N1x[n]ejN2πkn,k=0,1,,N1.

  • k k k 对应频域的索引,映射到某个距离单元 (Range Bin)
  • 若雷达采样率为 f s f_s fs,Chirp斜率为 k chirp   ( H z / s ) k_{\text{chirp}} \ (\mathrm{Hz/s}) kchirp (Hz/s),则每个频率点对应的距离可近似表示为
    R k ≈ c 2 k chirp ( k ⋅ f s N ) , R_k \approx \frac{c}{2k_{\text{chirp}}} \left(\frac{k \cdot f_s}{N}\right), Rk2kchirpc(Nkfs),
    其中 c c c 为光速。或用更直接的公式 R = c   f IF 2 k chirp R = \frac{c \, f_{\text{IF}}}{2 k_{\text{chirp}}} R=2kchirpcfIF 来表示。

对于脉冲多普勒雷达(非线性调频),在快时间上的FFT则与脉冲带宽相关:
Δ R ≈ c 2 B , \Delta R \approx \frac{c}{2 B}, ΔR2Bc,
其中 B B B 为脉冲带宽。FFT 后各点映射到不同的距离单元。

常见处理细节

  1. 窗函数 (Windowing):在做FFT前,为减小旁瓣,对快时间信号可乘以窗函数(如Hanning/Hamming)。
  2. 零填充 (Zero Padding):可将信号长度扩大到更高阶的2次幂尺寸,使得FFT计算更高效并在显示上更光滑。
  3. 频谱搬移 (FFT Shift):有时为了方便观察,将结果做fftshift,把零频点移到中间。

慢时间域 (Doppler FFT)

慢时间域概述

  • 采样对象:多个脉冲或多个Chirp 之间的回波序列。
  • 主要目的:获取目标速度信息(多普勒频移)。
  • 处理方式:对慢时间序列做FFT,即 Doppler FFT。

对于脉冲多普勒雷达:

  • 在每个脉冲回波中先做Range FFT,得到一组距离单元;
  • 对同一距离单元,随时间(脉冲号)累积形成一个长度为 P P P 的序列;
  • 然后对这 P P P 个脉冲做FFT,就得到该距离单元上的多普勒频谱。

对于FMCW雷达:

  • 通常一帧包含多个Chirp (每帧有 P P P个Chirp),对每个Chirp先做Range FFT;
  • 然后在慢时间 (Chirp 号) 上对同一个Range Bin 的幅度或复数信号做FFT,得到Doppler信息。

数学推导

设慢时间域的采样序列为 x p x_p xp p = 0 , 1 , … , P − 1 p = 0, 1, \dots, P-1 p=0,1,,P1,其中 P P P 为脉冲或Chirp数量。做 FFT:
X [ m ] = ∑ p = 0 P − 1 x [ p ]   e − j 2 π P m p , m = 0 , 1 , … , P − 1. X[m] = \sum_{p=0}^{P-1} x[p] \, e^{-j \frac{2\pi}{P} m p}, \quad m = 0, 1, \dots, P-1. X[m]=p=0P1x[p]ejP2πmp,m=0,1,,P1.

  • 若脉冲重复频率 (PRF) 为 F PRF F_{\text{PRF}} FPRF,则索引 m m m 对应的多普勒频率为
    f m = m   F PRF P . f_m = \frac{m \, F_{\text{PRF}}}{P}. fm=PmFPRF.
  • 在脉冲多普勒雷达中,若多普勒频率为 f D f_D fD,则目标径向速度 v v v f D f_D fD 的关系为
    v = λ   f D 2 = c   f D 2 f c , v = \frac{\lambda \, f_D}{2} = \frac{c \, f_D}{2 f_c}, v=2λfD=2fccfD,
    其中 f c f_c fc 为载频, λ = c / f c \lambda = c / f_c λ=c/fc

速度模糊与分辨率

  1. 最大不模糊速度 (Unambiguous Velocity)
    v max ⁡ = λ   F PRF 4 = c   F PRF 4 f c . v_{\max} = \frac{\lambda \, F_{\text{PRF}}}{4} = \frac{c\, F_{\text{PRF}}}{4f_c}. vmax=4λFPRF=4fccFPRF.
    若目标速度超过此值,会出现速度模糊(混叠)。
  2. 速度分辨率
    Δ v ≈ λ 2 T obs = c 2 f c T obs , \Delta v \approx \frac{\lambda}{2 T_{\text{obs}}} = \frac{c}{2 f_c T_{\text{obs}}}, Δv2Tobsλ=2fcTobsc,
    其中 T obs = P F PRF T_{\text{obs}} = \frac{P}{F_{\text{PRF}}} Tobs=FPRFP 为观察时间。观察时间越长,多普勒分辨率越高。

常见处理细节

  1. 脉冲对消 (Pulse Pair Processing):在脉冲多普勒雷达中,为简化计算,也会根据相邻脉冲的相位差来估计多普勒频率。
  2. 窗函数 (Windowing):同样在慢时间维度可以乘以窗函数,减少频谱泄露。
  3. 相位补偿:在某些系统里,还需要考虑平台运动、相位校准等。

Range-Doppler 成像 (2D FFT)

很多雷达系统会在同一帧内对快时间域慢时间域分别做 FFT,形成一个二维矩阵称作Range-Doppler Map

  • 第一维 (行):快时间FFT (Range FFT),对应距离;
  • 第二维 (列):慢时间FFT (Doppler FFT),对应速度。

从而我们可以在距离-速度平面 (Range-Doppler Plane) 上对目标进行检测(比如使用 CFAR)并识别运动信息。


总结

  1. 快时间域 (Range FFT) 用来获取目标的距离信息,对应一次脉冲/Chirp内的高采样率信号;
  2. 慢时间域 (Doppler FFT) 用来获取目标的速度信息,对应多次脉冲/Chirp之间的序列;
  3. 两次 FFT 结合即可得到 Range-Doppler 二维分布图,为后续目标检测、跟踪、识别提供依据;
  4. 雷达系统中还会涉及到更多信号处理细节,如脉冲压缩、MTI滤波、STAP等,但核心思想依然是先在时间上(距离方向)分辨,再在频率上(速度方向)分辨。

代码

import numpy as np
import matplotlib.pyplot as plt

def range_fft(fast_time_signal):
    """
    对单个脉冲/Chirp的快时间信号执行Range FFT
    fast_time_signal: 1D numpy array
    return: 1D numpy array (Range Spectrum)
    """
    N = len(fast_time_signal)
    # 可加入窗函数,如:
    # window = np.hanning(N)
    # fast_time_signal = fast_time_signal * window

    fft_result = np.fft.fft(fast_time_signal, N)
    range_spectrum = np.fft.fftshift(fft_result)

    return range_spectrum

def doppler_fft(range_bin_signals):
    """
    对同一距离Bin在慢时间维度的采样做Doppler FFT
    range_bin_signals: 1D numpy array, 长度P (脉冲或Chirp数)
    return: 1D numpy array (Doppler Spectrum)
    """
    P = len(range_bin_signals)
    # 可加入窗函数,如:
    # window = np.hanning(P)
    # range_bin_signals = range_bin_signals * window

    fft_result = np.fft.fft(range_bin_signals, P)
    doppler_spectrum = np.fft.fftshift(fft_result)

    return doppler_spectrum

# 演示:
# 1) 快时间信号 (Range FFT)
N = 1024
t_fast = np.arange(N)
# 假设目标对应一个模拟频率f0=20
fast_signal = np.cos(2*np.pi*20*(t_fast/N))
range_spectrum = range_fft(fast_signal)

# 2) 慢时间信号 (Doppler FFT)
P = 64
t_slow = np.arange(P)
# 假设多普勒频率 fd=5
slow_signal = np.exp(1j*2*np.pi*5*(t_slow/P))
doppler_spectrum = doppler_fft(slow_signal)

# 画图:
plt.figure(figsize=(12,5))

plt.subplot(1,2,1)
plt.title('Range FFT (Magnitude)')
plt.plot(np.abs(range_spectrum))
plt.xlabel('Range Bin')
plt.ylabel('Amplitude')

plt.subplot(1,2,2)
plt.title('Doppler FFT (Magnitude)')
plt.plot(np.abs(doppler_spectrum))
plt.xlabel('Doppler Bin')
plt.ylabel('Amplitude')

plt.tight_layout()
plt.show()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DuHz

喜欢就支持一下 ~ 谢谢啦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值