恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
雷达脉冲压缩全解析:LFM信号、匹配滤波与Matlab测距仿真
首页
资讯中心
/
雷达脉冲压缩全解析:LFM信号、匹配滤波与Matlab测距仿真
雷达脉冲压缩全解析:LFM信号、匹配滤波与Matlab测距仿真
发布时间:2026/10/1 20:18:58
做雷达信号处理这一行的朋友提起“脉冲压缩”这个词十有八九会点点头——脉冲压缩是雷达测距链路里绕不开的核心环节。先说它能干什么在峰值功率受限的硬件条件下用一个大时宽带宽积信号作为发射波形再在接收端通过匹配滤波把回波“挤”成一个窄脉冲既保证足够远的探测距离又不牺牲距离分辨率。这篇文章适合刚接触雷达信号处理、想搞懂测距原理和仿真链路以及被“旁瓣”“压缩比”这些概念绕晕的读者我会把原理、公式、Matlab代码、工程坑一条龙讲清楚尽量用大白话配合实际可跑的仿真例子。我见过不少初学者拿着教科书上一堆公式却始终没搞明白脉冲压缩到底“压”的是什么。其实一句话就能讲透脉冲压缩就是用信号设计换性能发射时故意把能量铺开接收时再靠匹配滤波把能量收拢。打个比方一群人从同一起点出发去终点如果大家速度都一样队伍永远是一字排开最后一个人到终点时队伍就拖得很长如果出发时给每个人安排不同的速度中途跑得慢的先出发、跑得快的后出发大家就能几乎同时到达终点——起点那个“宽队伍”就被压成了一个“窄队伍”。雷达脉冲压缩就是这么回事。1. 先搞清楚雷达测距的基本盘1.1 雷达测距最朴素的原理雷达测距的起点非常朴素电磁波从发射天线出去打到目标再反射回来接收端记录这个往返时间距离就等于时间差乘以光速再除以2。R c × τ / 2其中 τ 是发射脉冲与回波之间的时间延迟c 是光速约 3×10⁸ m/s。为什么要除以2因为电磁波走的是往返路径单程距离只有总路径的一半。这个公式我在实际处理数据时几乎每天都要用比如回波延时 1 微秒对应的目标距离就是 150 米延时 10 微秒就是 1.5 公里。记住这个换算关系很实用做算法验证时能快速判断仿真结果是量级上对还是错。但事情没有这么简单。实际的雷达回波是一段连续波形不是一个理想的“尖脉冲”接收端要从噪声里把回波找出来。这里就引出了两个最核心的技术指标一个是能探测多远这取决于信号能量和接收灵敏度另一个是能分辨多近即距离分辨率也就是能把相距多近的两个目标区分开。这两个指标在传统体制下是互相掐架的。1.2 脉冲压缩要解决的核心矛盾如果雷达发射的是一个很窄的矩形脉冲比如 0.1 微秒那么回波到达接收端时也是 0.1 微秒的窄脉冲测距精度很高两个相距很近的目标也能被清楚分开。窄脉冲对应的带宽很大距离分辨率好。但窄脉冲的问题在于脉冲越窄单个脉冲的能量就越低。发射机的峰值功率是硬上限受器件和散热限制不可能无限抬高。探测距离又取决于接收到的信号能量能量来自平均功率而平均功率等于峰值功率乘以占空比。脉冲太窄占空比就低平均功率上不去目标稍远一点就被噪声淹没。那怎么办把脉冲拉宽比如拉到 20 微秒、50 微秒平均功率上来了探测距离远了但距离分辨率急剧恶化——两个距离相差 1.5 公里的目标在 10 微秒脉宽下根本分不开。所以传统雷达陷入了“鱼与熊掌”的困境要么保分辨率丢距离要么保距离丢分辨率。脉冲压缩技术就是来打破这对矛盾的。2. 脉冲压缩的工作原理与关键指标2.1 用LFM信号做大时宽带宽积脉冲压缩的关键思想是我不再用简单的矩形脉冲而是用一个内部带有“调制结构”的宽脉冲。最常用的是线性调频信号LFMLinear Frequency Modulation也叫Chirp信号。在复基带表示下LFM信号的数学形式是s(t) A · rect(t/T) · exp(jπKt²)其中 T 是脉冲宽度K 是调频斜率单位是 Hz/s。信号从 t-T/2 到 tT/2频率从 -B/2 线性扫到 B/2B K·T 就是信号带宽。这里最绝妙的地方在于T 和 B 可以独立选择。你可以用一个 50 微秒的宽脉冲内部扫频带宽做 10 MHz也可以把带宽做到 100 MHz甚至 1 GHz。T 决定能量积累的时间B 决定后续压缩后的距离分辨率。两者的乘积 T·B 叫“时宽带宽积”这个数字越大脉冲压缩能带来的性能收益就越大。为什么时宽带宽积大就有优势因为理论上一个信号所能携带的信息量和能量结构与时宽带宽积直接相关。LFM信号把能量均匀铺开在 T 秒和 B 赫兹的“面积”里接收端有办法把这些能量重新“叠”回到 1/B 秒的时间窗口里。而普通矩形脉冲的时宽带宽积约等于 1T 和 B 绑在一起怎么调都逃不出那个矛盾。2.2 匹配滤波把宽脉冲压回窄脉冲脉冲压缩的接收端实现本质上是匹配滤波。匹配滤波器的冲激响应是发射信号的共轭倒序h(t) s*(-t)也就是说接收端用一个与发射信号“完全匹配”的滤波器对回波做卷积。为什么发射信号长什么样滤波器就要设计成什么样因为在高斯白噪声背景下匹配滤波器能最大化输出信噪比这在线性系统里是有严格数学推导的相当于从噪声里“抠”信号的最优手段。当回波信号 s(t) 通过匹配滤波器 h(t) 时输出近似为信号的自相关函数。对一个 LFM 信号做自相关得到的是 sinc 形状的窄脉冲主瓣宽度约 1/B。于是一个 50 微秒的宽脉冲经过匹配滤波后输出主瓣宽度变成了 1/B 的量级比如带宽 10 MHz 时主瓣约 0.1 微秒——脉冲被“压”了 500 倍。用生活化的方式理解每个频率分量在时间上本来分散在不同位置匹配滤波器相当于给不同频率分量施加了不同的“时延补偿”让它们在同一时刻到达输出端并同相叠加。这个过程在信号处理里也叫“相干积累”。实际工程中匹配滤波很少直接在时域做卷积因为采样率很高、点数很多时域卷积计算量太大。标准做法是转到频域对回波做 FFT乘以发射信号的共轭频谱再做 IFFT。这个过程在数字信号处理器里只是一次 FFT、一次复数乘法、一次 IFFT 的事实时性完全能保证。2.3 压缩比、距离分辨率和设计公式脉冲压缩设计时最重要的公式就这几个我每次做方案都会先写在纸上压缩后脉冲宽度τ 1/B压缩比D T / τ T·B距离分辨率ΔR c / (2B)注意第三行距离分辨率只和带宽 B 有关和脉宽 T 完全无关了。这就是脉冲压缩最性感的地方探测距离由 T 撑起来距离分辨率由 B 撑起来两者彻底解耦。带宽 10 MHz理论距离分辨率 15 米带宽 100 MHz理论分辨率 1.5 米。现在商用汽车毫米波雷达做 1 GHz 左右的带宽距离分辨率能做到 0.15 米量级这在传统窄脉冲体制下是不可想象的。压缩比 D 则告诉你一个宽脉冲经过匹配滤波后输出峰值功率相对噪声被“抬高”了多少倍。同样平均功率下脉冲压缩后的输出信噪比大致比未压缩时提升 D 倍。D500 就是约 27 dB 的处理增益这对远距离弱小目标检测意义巨大。在设计一个脉冲压缩雷达系统时我习惯的流程是先根据探测距离需求确定脉宽 T 和波形能量再根据距离分辨率需求确定带宽 B然后检查时宽带宽积是否合理最后考虑采样率、窗函数、多普勒容限等工程细节。3. 用Matlab从零搭建脉冲压缩测距仿真3.1 发射端仿真生成LFM线性调频信号理论说得再多不如跑一段代码来得踏实。我用 Matlab 写一个完整的单目标测距仿真从发射信号生成开始。%% 参数设置 fs 20e6; % 采样率 20 MHz T 50e-6; % 脉冲宽度 50 us B 10e6; % 带宽 10 MHz K B / T; % 调频斜率 2e11 Hz/s N round(T * fs); % 单个脉冲采样点数 %% 生成复基带LFM信号 t (0 : N - 1). / fs; t t - T / 2; % 将时间轴平移到以脉冲中心为0 s_tx exp(1j * pi * K * t.^2);这里有个细节值得说一下为什么用复信号而不是实信号复基带表示的好处是把载频 f0 剔除掉所有分析都围绕基带进行便于仿真和算法设计。实际系统中射频信号是实信号经过下变频后变成 I/Q 两路正交的复基带信号所以仿真里直接用复基带是和实际架构对齐的。采样率选 20 MHz是带宽 10 MHz 的 2 倍刚好满足奈奎斯特采样定理。不过实际工程里我不会正好踩在 2 倍上一般留 1.2 到 2 倍的裕量相当于 2.4 倍带宽以上具体原因后面排查章节细说。生成信号后可以画一下实部和虚部LFM 信号的实部是频率逐渐增大的振荡波形再画一下频谱应该能看到一个平坦的带通形状宽度约 10 MHz。3.2 接收端仿真频域匹配滤波实现脉冲压缩接下来构造一个单目标回波目标距离 4.5 公里对应往返延时 30 微秒幅度设为 0.8加一点高斯白噪声。%% 构造目标回波 td 30e-6; % 目标时延 30 us - 距离 4500 m Ar 0.8; % 回波幅度 s_rx Ar * exp(1j * pi * K * (t - td).^2); % 注意时间平移 s_rx s_rx .* (abs(t - td) T/2); % 截断到脉冲范围内 %% 加噪声 SNR_dB 15; noise_pow mean(abs(s_rx).^2) / (10^(SNR_dB / 10)); noise sqrt(noise_pow / 2) * (randn(N, 1) 1j * randn(N, 1)); s_rx s_rx noise;这段构造回波的方式是“发射信号直接搬时间轴”在数学上是近似但在脉冲压缩仿真里足够用了。更严谨的做法是构造一个无穷长的时间轴让回波脉冲真正落在某个位置再截取观测窗口这样能避免边界处的循环效应。我早期偷懒直接用上面的方式结果测距偏差不明显但峰值幅度会有些误差后来改成大时间轴之后结果更干净。匹配滤波用频域实现%% 频域匹配滤波 Nfft 2^nextpow2(2 * N); % FFT点数留足线性卷积空间 S_TX fft(s_tx, Nfft); S_RX fft(s_rx, Nfft); H conj(S_TX); % 匹配滤波器频响 Y S_RX .* H; s_pc ifft(Y, Nfft);这里有个非常重要的工程细节频域相乘对应的是循环卷积而不是线性卷积。如果 Nfft 取成和 N 一样会导致脉冲从尾部“卷”到头部产生假目标或测距偏差。正确的做法是让 Nfft 至少大于 N N_h - 1其中 N_h 是滤波器长度这里发射信号长度也是 N所以我取 2^nextpow2(2*N)这样线性卷积的空间就留够了。很多新手在这个地方翻车压出来的波形看起来怪怪的找半天毛病才发现是循环卷积惹的祸。压缩完成后把时延轴换算出来找峰值位置%% 峰值检测与距离换算 t_out (0 : Nfft - 1). / fs; [~, idx] max(abs(s_pc)); delay_est t_out(idx) - T / 2; % 减掉匹配滤波引入的固定时延 range_est 3e8 * delay_est / 2; fprintf(估计距离%.2f m\n, range_est);为什么峰值位置要减掉 T/2因为发射信号时间轴从 -T/2 开始而匹配滤波输出峰值的位置天然包含了一个 T/2 的固定偏移这是LFM自相关函数的结构决定的。第一次做仿真时我没做这个修正测出来的距离偏差了 750 米后来想明白是这个固定偏移补上之后就对了。实测这段代码的测距误差在亚米级别主要来自采样率离散化。3.3 多目标场景与加窗处理单目标只是热身。雷达实际面对的都是多目标场景两个目标距离接近时脉冲压缩输出的 sinc 主瓣会互相干扰。假设两个目标分别在 4.5 km 和 4.548 km对应的时延分别是 30 微秒和 30.32 微秒幅度一个大一个小大目标幅度 1小目标幅度 0.2相差 14 dB。直接做匹配滤波会发现小目标的主瓣几乎被大目标的旁瓣淹没——sinc 函数的第一旁瓣只比主瓣低约 13.2 dB而小目标比大目标弱 14 dB刚好卡在旁瓣水平上肉眼很难分辨。解决办法是加窗。给匹配滤波器的频响乘上窗函数比如汉明窗Hamming可以把旁瓣压制到 -40 dB 左右但代价是主瓣会展宽约 1.5 倍距离分辨率略微变差。%% 加窗匹配滤波 w hamming(Nfft, periodic); H_windowed conj(S_TX) .* w; Y_w S_RX .* H_windowed; s_pc_w ifft(Y_w, Nfft);从仿真结果能看得很清楚不加窗时两个目标几乎糊在一起加窗后两个峰清清楚楚分开。这也是工程里最常见的做法——牺牲一点点分辨率换取对弱目标的检测能力。这里也补充一下窗函数的选择有讲究。汉明窗和汉宁窗是最常用的但如果你对旁瓣要求更高可以用泰勒窗Taylor它在主瓣宽度和旁瓣电平之间做了更精细的折中。对于需要极低旁瓣的场景甚至可以做失配处理设计专门的加权系数来压低特定区域的旁瓣但代价是信噪比损失更大。加窗后的实测效果我整理了一个对比处理方式峰值旁瓣比主瓣宽度相对信噪比损失不加窗-13.2 dB1.0×0 dB汉明窗-42.8 dB1.5×约 1.5 dB汉宁窗-31.5 dB1.6×约 1.5 dB泰勒窗nbar4-34.5 dB1.4×约 1.0 dB4. 工程实现中最常踩的坑4.1 旁瓣抬高强目标、淹没弱目标仿真里出现的问题工程里只会更严重。脉冲压缩输出的 sinc 旁瓣如果不加抑制大目标的旁瓣会形成一条“尾巴”把附近的小目标完全盖掉。这就是所谓的“旁瓣遮蔽效应”。我印象很深的一件事某次处理实测数据时一个强散射体旁边明明有个小目标但压缩图上怎么都看不出来。后来做了加窗处理小目标像变魔术一样浮现出来。从那以后我做脉冲压缩都会顺手把旁瓣指标算一遍而不是只看主瓣有多尖。这里有两个指标必须清楚峰值旁瓣比PSLR和积分旁瓣比ISLR。PSLR 衡量最大旁瓣相对主瓣的高度ISLR 衡量所有旁瓣能量总和相对主瓣能量的比例。雷达系统设计里检测弱目标主要看 PSLR而杂波抑制场景更看重 ISLR。加窗能同时改善这两个指标但改善幅度不同需要根据场景权衡。工程经验在大多数测距雷达里PSLR 做到 -30 dB 以下是基本要求如果是强杂波环境争取 -40 dB 以下。Hann/Hamming 窗基本够用要求再高就得用更复杂的加权设计。4.2 多普勒频移带来的失配问题第二个大坑是目标运动带来的多普勒频移。前面所有推导都假设回波与发射信号完全一样只是延时和幅度不同。但实际目标在运动回波会叠加一个多普勒频移 fd。对 LFM 信号来说多普勒频移会让回波信号的频率整体偏移导致它与匹配滤波器不再“完美匹配”。效果是什么呢输出峰值幅度下降而且主峰位置会在距离轴上偏移产生距离-多普勒耦合。频移越大峰值损失越严重。对于理想的 LFM 信号匹配滤波对多普勒的响应是 sinc 函数形状当 fd 等于 1/T 量级时峰值损失就不可忽略了。雷达系统用“模糊函数”来描述这个问题它反映了距离时延和多普勒频移两个维度上匹配滤波的输出。LFM 信号的多普勒容限相对较好但也不是无限的。我在做运动目标仿真时通常会按多普勒通道分多路匹配滤波或者用 FrFT分数阶傅里叶变换等方法进行处理而不是只用一组静止滤波系数。给个直观参考LFM 信号脉宽 T50 微秒时多普勒频移到 20 kHz 附近匹配滤波峰值损失已经比较明显了。如果是做高速运动平台上的雷达比如机载下视或者弹载场景必须把多普勒因素纳入设计否则测距结果会带系统偏差幅度也忽大忽小。4.3 参数组合的经验与取舍最后谈谈参数设计。脉冲压缩最大的优势是 T 和 B 解耦但解耦不等于可以随便选。以下几个参数我要特别提醒第一采样率。带宽 B 决定了采样率下限工程上我不推荐正好用 2 倍采样因为抗混叠滤波器不是理想矩形过渡带会留出一些频谱成分正好 2 倍时会混叠。一般取 2.4 到 4 倍带宽比较稳妥。LFM 信号在频域是平坦的混叠一旦发生压缩后的旁瓣会升得很高事后很难弥补。第二FFT 点数与处理帧长。频域脉冲压缩的 Nfft 要留足避免循环卷积污染。我之前提过 Nfft 至少是信号长度加滤波器长度减一实践中最稳妥的是用 nextpow2 向上取整后再乘 2 或 4。代价只是多一些零填充但这保证了峰值位置不发生偏移。第三脉宽和带宽的搭配。时宽带宽积不是越大越好。T·B 越大系统复杂度、存储量和多普勒敏感性都会跟着上来。一般测距雷达 T·B 在 100 到 1000 这个范围是平衡点。我设计仿真时常用 T50 微秒、B10 MHzT·B500既有明显的压缩增益又不会让数值仿真出各种边界问题。第四多目标的遮挡问题。两个目标距离很近时即使加窗后主瓣能分开旁瓣还是可能互相叠加。设计时要考虑目标场景里回波强度动态范围若需要抵抗大动态范围窗函数的旁瓣指标要留余量最好做蒙特卡洛仿真验证。还有一个容易被忽略的细节脉冲压缩前通常要做脉冲对消或杂波抑制处理否则强地杂波会直接淹没目标信号。我在做实测数据时流程一般是先杂波抑制再做脉冲压缩最后做检测。顺序不能反反了杂波被压缩成尖峰后后面的处理就难办了。4.4 应用场景与进一步扩展脉冲压缩的应用已经非常广了。气象雷达用它来分辨不同高度的降水回波汽车毫米波雷达用 FMCW 调制、本质上也是线性调频加匹配处理的思路实现几十米范围的精确测距无人机避障雷达用极短调频周期的 LFM 波形在低功耗条件下获得厘米级分辨率合成孔径雷达SAR更是把匹配滤波用到了极致距离向压缩之后还要做方位向压缩才能形成高分辨图像。如果想在这个方向继续深入我建议你按这个顺序学习拓展先彻底玩熟 LFM 脉冲压缩的时域和频域实现搞清楚加窗、压缩比、距离分辨率的取舍然后研究 FMCW 体制和 2D-FFT 测距测速这是当下车载雷达的主流做法再由浅入深看模糊函数理论理解每种波形的多普勒敏感性和旁瓣结构最后如果做雷达系统去研究脉间积累、目标检测和恒虚警处理CFAR把压缩链路接到后端检测模块里。我个人在实际操作中的体会是脉冲压缩看似只有几个公式但真正把它用对靠的是对每一处细节的敏感——采样率留多少裕量、Nfft 怎么取、窗函数用哪种、峰值校正怎么算每一项都决定了你最终测出来的距离准不准、分辨得清不清。建议读到这里的朋友自己动手把仿真的单目标改成双目标再改成加入多普勒的动目标把每个坑都踩一遍。踩过了你才真正掌握脉冲压缩这门手艺。