资讯动态

双基地雷达原理与bistatic code设计:从几何模型到Python仿真

发布时间:2026/9/15 1:41:01 来源:尧图企业网站定制
简介基于 MATLAB 的双站雷达仿真源码主要面向雷达工程学习者、科研人员及通信专业学生用于快速理解 Bistatic Radar 的建模流程与分析方法。双站雷达因发射站与接收站分离相比传统单站体制能有效扩大探测范围、增强系统隐蔽性、改善角度分辨率并支持多视角观测在复杂地形或城市环境中也表现出更强的穿透遮挡与适应能力。资源以 rar 压缩包提供仅包含 1 个 M 脚本文件总大小约 3KB代码十分精简适合快速阅读与二次开发。脚本覆盖了从发射信号生成、空间传播路径损耗、目标反射回波到接收机匹配滤波和距离/角度参数提取的完整链路用户可直接运行并调整目标距离、角度、RCS 等关键变量通过结果对比直观观察双站几何配置带来的影响。已有 171 名学习者下载使用既可作为课堂教学演示也可用于算法验证或课程设计支撑能帮助读者快速搭建属于自己的双基地雷达仿真环境。1. 双基地雷达收发分置让距离公式从 2R 变成了 R_T R_R雷达工程师做测距时有一句口头禅「除以二」——信号发出去碰到目标再折回来时延乘光速对半就是距离。这个习惯成立的前提是发射机和接收机背靠背锁在同一副天线上。bistatic radar双基地雷达把收发拆成两个阵地发射站和接收站隔开几公里甚至上千公里时延对应的不再是往返距离而是发射站到目标、目标到接收站的「距离和」。公式一改多普勒解算、RCS 估算、同步策略全部要跟着重写。下文按几何、系统、bistatic code 信号设计、仿真处理、外场落地这条路径讲适合要搭双基地雷达原型、做外场实验或者啃双基地雷达论文的工程师。2. 双基地 radar 的几何模型距离和、等距椭圆与双基地角2.1 距离和为什么不再除以 2双基地测距公式假设发射站 Tx、接收站 Rx目标在 T。单基地雷达时延 τ 2R/c双基地时延是 τ (R_T R_R)/c其中 R_T |Tx − T|、R_R |Rx − T|。这时从时延只能恢复「距离和」R_sum R_T R_R无法区分目标到底靠近发射站还是接收站——几何上距离和相同的所有目标点落在以 Tx、Rx 为焦点的椭圆上这就是等距椭圆isorange ellipse。接收端拿到距离和之后必须再叠加一个角度测量方位/俯仰才能把目标定在椭圆与视线的交点上。测距精度也随之变化。单基地的距离估计精度主要受带宽和 SNR 约束双基地测距精度还要叠加同步误差时延测量误差里包含发射时刻不确定度 Δt_sync折算到距离和就是 c·Δt_sync。我遇到过 100 ns 量级的时间同步抖动直接把测距误差抬到 15 米这在单基地系统里根本不会出现。所以双基地测距预算要拆开写一部分给 Cramér-Rao 下界一部分给同步链路。参数单基地双基地测距公式R cτ/2R_sum cτ定位方式距离 角度直接得坐标距离和 角度有椭圆模糊多普勒f_d 2v_r/λf_d (v·u_T v·u_R)/λRCS 参照后向散射随双基地角变化前向增强时间同步收发共用本振需要独立同步链路2.2 双基地角 β 如何决定 RCS 与观测盲区双基地角 β 定义为「发射站—目标」连线和「目标—接收站」连线之间的夹角。β 很小时系统近似单基地β 接近 180° 时进入前向散射区。理想导体目标在前向散射区有强烈的镜面反射增强RCS 可能比后向大几十倍这正是被动探测隐身目标时常用前向散射配置的原因。可前向散射区的坑在于距离和随时间变化率很小多普勒几乎为零目标横穿基线时信号强度很高、速度却完全测不出来。布站时我习惯先把目标可能航路、发射站、接收站投到地图上逐网格算 β 和等距椭圆凡是 β 150° 的区域默认标成「可探测但测速无效」这个限制条件写进跟踪器的门控逻辑里避免滤波器拿零多普勒的航迹点把速度外推坏。同步要估算的角度不只有 β还包括目标相对两站的视线角这些参数在雷达方程里是连乘关系不能只看单站覆盖。2.3 双基地多普勒是两条视线的投影和别用 2v/λ 直接算双基地多普勒写成 f_d (1/λ)·dR_sum/dt (1/λ)(v·u_T v·u_R)其中 u_T、u_R 分别是目标指向发射站、接收站的单位矢量。与单基地 v·u 相比它把目标速度投影到了两条不同视线上。两个直接后果其一同一目标在双基地里的多普勒幅度可能比单基地小一半甚至反向做动目标检测时必须按几何配置留速度余量其二多普勒不再唯一对应「径向速度」跟踪端要估计完整速度矢量而不是一个径向标量。在接收站的信号处理流程里多普勒这一维的搜索范围建议按几何最大值算把目标速度设为系统最大可测值遍历其所有方向取 (v·u_T v·u_R) 的最大绝对值作为 PRF 设计输入。只按单基地 2v/λ 定 PRF出现速度模糊的概率不小尤其是目标沿两站视线夹角平分线方向飞行时。2.4 基线穿越区目标横穿收发连线时的多普勒塌缩目标经过 Tx−Rx 基线附近时距离和的变化率趋近于 0多普勒也趋近于 0但距离对时间的二阶项会引入很强的非线性调频。我在一次仿真里让目标横穿 20 km 基线中点64 个脉冲的积累时间内目标在距离维漂了 3 个距离门速度门却几乎不动。如果用匀速直线模型强行外推下一帧的关联门就直接错了。常见做法是把基线附近区域单独标记为「低多普勒段」不参与测速初始化或者把 PRF 提高一档换取更短的积累时间和更小的跨距离门走动。要注意这段区域的回波幅度反而很高前向散射增强不要为了提高检测门限而把它滤掉。3. 双基地 radar 系统架构与功率预算、同步链路设计3.1 三种常见架构星载照射源、机会辐射源、专用收发站双基地 radar 按发射源来源分三类。第一类是星载照射源加地面接收站发射源是卫星接收站建在地面覆盖广、接收站可以做成无源的但同步链路必须依赖卫星下行信号里的已知帧结构。第二类是地面广播、通信基站做机会辐射源不需要专用发射机成本极低但波形不受控制测距测速精度完全取决于通信信号结构bistatic code 设计无从谈起。第三类是专用地面发射站加专用接收站两端都可以自由设计编码和同步方案是研究双基地雷达最干净的起点本文后面的 bistatic code 设计主要针对这种。搭原型系统我建议从第三种开始先把编码、同步、处理链路全部打通再考虑换外部辐射源。否则波形、同步、几何三个变量同时搅在一起出了问题很难定位。3.2 直达波功率预算先算动态范围再选 ADC收发分置后接收站正对发射站方向会收到极强的直达波。用链路预算快速估算一下双方功率差决定接收通道的动态范围和低噪放饱和点。直达波走自由空间传播P_d P_t G_t G_r 20lg(λ) − 20lg(4π) − 20lg(L)目标回波走双基地雷达方程P_e P_t G_t G_r 20lg(λ) 10lg(σ) − 30lg(4π) − 20lg(R_T) − 20lg(R_R)。import math c 3e8 f0 5e9 lam c / f0 L 20e3 # 基线 20 km r_t 36e3 # 发射站到目标 r_r 36e3 # 目标到接收站 sigma 1.0 # 目标 RCS 1 m^2 p_t 40 # 发射功率 dBm10 W g_t 30 # 发射天线增益 dBi g_r 30 # 接收天线增益 dBi const 20 * math.log10(lam / (4 * math.pi)) p_d p_t g_t g_r const - 20 * math.log10(L) p_e p_t g_t g_r const 10 * math.log10(sigma) \ - 20 * math.log10(r_t) - 20 * math.log10(r_r) - 20 * math.log10(4 * math.pi) print(f直达波功率: {p_d:.1f} dBm) # 约 -73 dBm 量级 print(f目标回波: {p_e:.1f} dBm) # 约 -140 dBm 量级 print(f差值: {p_d - p_e:.1f} dB) # 通常 60~100 dB这段代码里 const 是波长相关的公共项最后一项 20lg(4π) 是双基地雷达方程里 (4π)³ 分母多出来的部分。运算后直达波通常比目标回波高 60 dB 以上。ADC 位数、中频增益分配要按这个差值设计否则目标信号会被噪底盖住。工程上第一道抑制是接收天线方向图在发射站方向压零点第二道是时间门避让——只在目标回波窗口开门采样躲开直达波前沿。两道加起来不够再考虑自适应对消也就是第 6 章要讲的参考通道方案。3.3 时间同步与相位同步分别卡在哪个指标上时间同步的目标是把发射时刻和接收采样时刻对齐。常见手段有 GNSS 授时PPS 秒脉冲对齐约 100 ns 量级、光纤同步线皮秒级、双向时间比对亚微秒级但适合远距离。指标怎么定同步误差 c·Δt_sync 要小于距离分辨力的四分之一。按 15 m 距离分辨力算时间同步误差应小于 12.5 ns普通 GNSS 授时不够用得上载波相位或双频接收机。相位同步的需求取决于是否相参积累。如果要做相参处理收发本振之间的相位差必须稳定常见做法是 10 MHz 参考经光纤分发或双向相位比对在线估计相位差非相参模式先脉压取幅度再积累对相位要求低很多。无论哪种系统里都要保留一个直达波参考通道接收站用单独波束对准发射站把直达波连续采下来它同时承担时间基准、相位基准和动态范围监测三个职能。3.4 一发多收与多发多收bistatic code 的站间复用必要性单个发射站配合多个接收站时各接收站用同一波形即可同步是一对多的树状分发不需要编码区分。多个发射站同时工作时接收端必须回答「这段回波是谁发的」这时只剩两条路要么在时间/频率上错开要么在编码上错开。时间上错开会降低脉冲密度频率上错开占用带宽。码分CDMA 思路不牺牲脉冲密度代价是要求发射站之间码组互相关足够低接收端用多个匹配滤波器并行解出每个站的回波。这就是第 4 章里 bistatic code 的核心用途之一。4. bistatic code 信号设计从匹配滤波增益到多站码分隔离4.1 没有本振做时间基准编码就是发射信号的指纹双基地接收端拿到的是一串不知道发射起始时刻的回波它得先从信号里认出「这是我方发射的波形」。bistatic code双基地编码的本质是给发射波形打上可辨识的指纹相位编码信号通过码组尖锐的自相关峰让接收端精确找到每个脉冲的起始时刻同时脉压把微弱回波的能量聚到一个距离门上。所以选码第一看自相关主峰与旁瓣的比值第二看码族里不同序列之间的互相关峰值第三才是带宽效率和工程实现难度。4.2 BPSK 相位编码的数学模型与两个核心指标BPSK 编码信号写为 s(t) Σ a_n p(t − nτ_c)其中 a_n ∈ {1, −1}τ_c 是码片宽度p(t) 是矩形脉冲。信号带宽约为 1/τ_c距离分辨力 ΔR cτ_c/2匹配滤波的输出峰值 SNR 增益约 10lg(N) dBN 为码长。两个常用候选巴克码长度只有 2、3、5、7、11、13 几种自相关副瓣理想地低到 1但增益只有 11 dB 封顶适合高 SNR 短脉冲实验m 序列长度 N 2^k − 1 可以任意做长周期自相关旁瓣恒定等于 −1/N工程上更容易把处理增益做上去。码型可用长度自相关旁瓣周期处理增益典型场景巴克码2/3/5/7/11/13旁瓣幅度 1≤ 11 dB短距离快速验证m 序列2^k − 1−1/N10lgN长积累相参处理Gold 码族2^k − 1 组≤ (N1)/N 上界10lgN多站码分隔离4.3 多发射站码分互相关峰值比自相关旁瓣更重要多站码分时接收端做两组相关本站码的自相关和他站码的互相关。误检概率取决于互相关峰值与自相关主峰的比值。m 序列的互相关特性不够平某些相移组合下互相关旁瓣会接近自相关主峰直接拿同一根 m 序列改初相来区分发射站并不安全。Gold 码族是专门为控制互相关上界设计的从一对优选 m 序列取不同相移组合得到一族码长相同的序列族内最差互相关峰值有理论边界选码时按这个最差值做验收指标。布站流程上我一般先确定接收站数量再给每个发射站分配互相关峰最低的几组 Gold 码最后用一段离线互相关扫描确认「最差情况」低于判决门限 6 dB 以上才放行。只有一发多收时不需要码分所有接收站用同一组 m 序列即可处理更简单。4.4 码长、码片宽度、PRF 的联调一张参数表码片宽度决定距离分辨力和带宽码长决定处理增益和脉冲时宽PRF 决定距离/速度不模糊范围。三个参数互相牵制码长太长发射占空比变大近距离盲区随之增大发射期间接收机关断PRF 太高距离不模糊范围缩小PRF 太低多普勒模糊。双基地里最大多普勒不是 2v/λ而是按第 2 章几何扫描出的最大值。参数数值设置依据载频5 GHz兼顾天线口径与大气衰减码片宽度100 ns距离分辨力 15 m码长511脉压增益 27 dB信号时宽51.1 μs对应约 7.7 km 发射盲区PRF2 kHz最大不模糊距离 75 km积累脉冲数64相参积累增益 18 dB这个配置里盲区 7.7 km意味着目标低于这个距离和时看不到。缩短码长或者提高 PRF 都可以压缩盲区代价分别是增益下降和最大探测距离缩短外场实验时按任务优先级来回调即可。5. 用 Python 复现双基地回波生成与距离-多普勒处理5.1 最小可运行的回波生成坐标、时延、码序列模拟用基带信号就够了。第一步按几何算距离和再换算时延别按单基地习惯除以 2——这是双基地仿真里最常见的复制粘贴事故。import numpy as np c 3e8 fs 40e6 # 采样率 40 MHz带宽 10 MHz4 倍过采样 ts 1 / fs chip_dur 100e-9 # 码片 100 ns距离分辨力 15 m n_per_chip round(chip_dur / ts) code np.random.choice([1, -1], 511) # 511 位双极性码 tx code.repeat(n_per_chip).astype(float) # 基带发射波形 tx_pos np.array([0, 0, 0]) rx_pos np.array([20e3, 0, 0]) # 20 km 基线 target_pos np.array([30e3, 20e3, 0]) r_t np.linalg.norm(target_pos - tx_pos) r_r np.linalg.norm(target_pos - rx_pos) r_sum r_t r_r # 距离和不除以 2 delay_samp round(r_sum / c / ts) # 时延量化到采样点 echo np.zeros_like(tx) if delay_samp len(tx): echo[delay_samp:] tx[: len(tx) - delay_samp] echo echo 0.1 * np.random.randn(len(tx)) # 加噪代码里 delay_samp 超过脉冲长度时直接丢失目标说明探测距离不够或距离窗开小了。回波是发射波形的纯延迟加噪声忽略了幅度衰减和多普勒这些在 5.3 节补上。5.2 匹配滤波与距离解算full 模式的下标偏移别搞错匹配滤波用 np.correlate 的 full 模式实现。峰值索引对应的时间偏移不是它本身而是要减去参考信号长度减一即真实时延样本数 argmax(|corr|) − (len(tx) − 1)。漏掉这一步测距结果会整体偏移一个脉冲宽度511 码片长度下就是 7.7 km 的误差。mf np.correlate(echo, tx, modefull) # 匹配滤波 peak np.argmax(np.abs(mf)) delay_est peak - (len(tx) - 1) # 关键修正 print(真值时延:, delay_samp, 估计时延:, delay_est) print(距离和误差:, (delay_est - delay_samp) * ts * c, m) print(估计距离和:, delay_est * ts * c, m / 真值:, r_sum, m)匹配滤波的本质是接收信号与发射码序列做循环相关峰值出现在码序列对齐的时刻。代码里 peak 对应的就是这一帧数据窗口内到达时刻的采样点计数减去窗口起点偏移量后才等于目标时延。量化误差在最坏情况下有半个采样周期也就是约 3.75 m 的距离误差属正常现象想要更细的距离分辨力就提高采样率或缩短码片宽度而不是改进滤波方式。5.3 多脉冲积累距离-多普勒二维处理的完整骨架单次脉压在低 SNR 下可能看不到峰工程上靠多脉冲相参积累把每个距离门上的同相分量叠加起来。对每个脉冲做脉压后按脉冲序号做 FFT就得到距离-多普勒图。M 16 # 16 个脉冲 prf 2e3 pri 1 / prf pri_samp round(pri / ts) pulse_len len(tx) total_len delay_samp pulse_len # 距离窗长度 fd 120.0 # 目标多普勒 120 Hz all_echo np.zeros((M, total_len), dtypecomplex) txc tx.astype(complex) for m in range(M): tm m * pri pulse np.zeros(total_len, dtypecomplex) pulse[delay_samp:delay_samp pulse_len] txc * np.exp(1j * 2 * np.pi * fd * tm) pulse[delay_samp:delay_samp pulse_len] 0.1 * (np.random.randn(pulse_len) 1j * np.random.randn(pulse_len)) all_echo[m, :] pulse mf_matrix np.array([np.correlate(all_echo[m, :], txc, modefull) for m in range(M)]) mf_matrix mf_matrix[:, :total_len] # 截断到距离窗 rd np.fft.fftshift(np.fft.fft(mf_matrix, axis0), axes0) rd_abs np.abs(rd) peak_m, peak_r np.unravel_index(np.argmax(rd_abs), rd_abs.shape) fd_est (peak_m - M // 2) / M * prf r_sum_est peak_r * ts * c print(目标多普勒:, fd_est, Hz / 真值:, fd) print(距离和:, r_sum_est, m / 真值:, r_sum)逐行说明每个脉冲乘的相位 e^{j2πfd·tm} 模拟目标运动引起的多普勒累积FFT 沿脉冲维做变换后峰值所在行就是目标多普勒列就是目标距离门。速度分辨率等于 PRF/M此配置 2k/16 125 Hz想要更细就增加积累数或降低 PRF距离维上与 5.2 节相同仍要注意 full 模式截断后的对齐关系。5.4 仿真里必然踩到的三个坑第一个坑是时延按 2R/c 算双基地会差近一倍定位直接错。第二个坑是相关 full 模式不看下标偏移距离整体偏差一个码长。第三个坑是把直达波置零时距离窗开得太小把目标回波一并切掉。想验证算法正确性先把噪声置零、信噪比调高跑一帧确认峰值落在对应距离门和多普勒门上再逐步加入噪声和干扰这样出问题知道往哪查。6. 双基地 radar 外场布站、直达波校准与快速验证6.1 布站前先算等距椭圆与双基地角等值线外场实验布站前别急着架天线。把发射站、接收站坐标固定后用 numpy 在地图网格上逐点算距离和与 β画三张图等距椭圆图、β 等值线图、多普勒灵敏度图。等距椭圆决定距离窗的起始位置β 等值线找出前向散射增强区也标记出低多普勒区多普勒灵敏度图按 v·u_T v·u_R 计算用来核对 PRF 是否有模糊风险。半小时的绘图能省下外场一天的无效数据。6.2 用直达波本身做时间校准把同步误差抵掉大半接收站永远能看到直达波它是系统里最强的参考信号。把匹配滤波输出的直达波峰作为时间零点目标回波时延变成「相对直达波的时延差」GNSS 同步源里的小抖动直接被差分抵消。校准步骤先找直达波峰索引 d再找目标峰索引 t目标的距离和 (d − t)·ts·c L其中 L 是基线长度。d_peak np.argmax(np.abs(mf_direct)) # 直达波峰索引 t_peak np.argmax(np.abs(mf_target)) # 目标回波峰索引 r_sum_cal (t_peak - d_peak) * ts * c L # 距离和差值加基线 print(校准后距离和:, r_sum_cal)注意直达波峰可能饱和匹配滤波前要检查采样值是否削顶削顶会导致主峰展宽、时间估计偏移几个采样点这种情况下用前沿中点估计代替峰值位置。6.3 参考通道只解相位不做幅度对消参考通道的第一用途是相位校准把直达波下变频后测量其相位随时间的变化这段相位漂移来自两个本振之间的相对抖动把它作为共轭补偿乘到目标通道上能恢复相参性。幅度对消是另外一回事它需要一个与目标通道特性一致的辅助通道先估计直达波在目标通道里的幅度和相位副本再做对消。两者的实现难度差一个量级建议先做相位校准再做对消。6.4 快速验证三步时延自检、对消检查、单站对照架好系统后的第一件事是在已知坐标放一个角反射器比对计算距离和与测量距离和误差超过一个距离门就查时间同步链路和码片宽度设置。第二步打开对消算法观察直达波主瓣幅度下降量低于 20 dB 说明参考通道幅度/相位不一致多半是辅助通道频响没校准。第三步用一台单基地雷达测同一个目标把单基地测距 R 与双基地距离和 R_sum 做一致性对照R_sum 应该大于 R 且小于 R L如果超出这条区间大概率是发射站或接收站坐标标错了。这三步半小时能跑完值得在每次外场数据采集前重复一遍。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价