4. 波束形成基本原理与常规波束形成器

波束形成的本质,是对阵列各阵元接收到的信号施加一组可控的复加权,使来自某个方向的信号同相叠加、来自其他方向的信号相互抵消或削弱,从而在空间上形成“指向性”。理解这一节,需要抓住三个层次:物理上的延迟求和、数学上的权向量设计,以及评价结果的波束图。三者构成从原理到实现的完整链条。

一、从几何延迟到延迟求和

先约定坐标系:以均匀直线阵(ULA)为例,阵元沿 x 轴等间距 d 排列,远场平面波以与阵列法线(阵列正前方)夹角 θ 入射,θ 称为方位角,法线方向为 0°。相邻阵元间的波程差为 Δr = d·sinθ,对应时延 τ = d·sinθ / c,c 为声速(水中约 1500 m/s)。

若入射方向为 θ₀,则第 n 个阵元(n = 0,1,…,N−1)相对参考阵元的时延为 τₙ = n·d·sinθ₀ / c。延迟求和(Delay-and-Sum, DAS)波束形成器对每个阵元先补偿这一时延,再求和:

y(t) = Σₙ xₙ(t + τₙ)          (连续时间形式)
y[k] = Σₙ xₙ[k + round(τₙ·fs)]  (离散采样形式)

补偿后,来自 θ₀ 的信号在各通道对齐、相干相加,幅度约为 N 倍;来自其他方向的信号因残余时延而部分抵消。这就是“延迟求和”名称的由来,也是常规波束形成器(Conventional Beamformer, CBF)的物理内核。

二、窄带近似与权向量设计

当信号为窄带(中心频率 f₀,波长 λ = c/f₀)时,时延可等效为相移:τₙ 对应相位 φₙ = −2πf₀τₙ = −2πn(d/λ)sinθ₀。于是 DAS 可写成复加权求和形式:

y = wᴴ x,   w = [1, e^{−j2π(d/λ)sinθ₀}, …, e^{−j2π(N−1)(d/λ)sinθ₀}]ᵀ

这里的 w 就是导向向量(steering vector),也称阵列流形向量。CBF 的权向量设计原则非常直接:权向量取期望方向的导向向量,即 w = a(θ₀),使该方向增益归一化最大。若需保持无失真响应,可加约束 wᴴa(θ₀) = 1,此时 w = a(θ₀)/(aᴴ(θ₀)a(θ₀)),即归一化匹配权。

设计时有两个工程要点。其一是栅瓣:当阵元间距 d > λ/2 时,除主瓣外会出现与主瓣等高的栅瓣,导致方位模糊,因此通常取 d ≤ λ/2。其二是主瓣宽度:主瓣宽度近似与 λ/(N·d) 成正比,阵元数越多、孔径越大,主瓣越窄、分辨力越高,但旁瓣结构也随之变化。

三、波束图的定义与读图

波束图(Beam Pattern)描述阵列对单位强度平面波的响应随入射角的变化,定义为:

B(θ) = |wᴴ a(θ)|² / (wᴴw · aᴴ(θ)a(θ))   (归一化功率形式)
B_dB(θ) = 10·log₁₀ B(θ)

读图时关注四个量:主瓣指向(峰值所在角度,应等于设计指向 θ₀)、−3 dB 主瓣宽度(分辨力指标)、峰值旁瓣电平(PSL,抗干扰与抗混响能力指标)、栅瓣位置(是否存在模糊)。对 N 元均匀加权 ULA,第一旁瓣约 −13.2 dB,这是均匀加权 CBF 的经典特征。

阵列接收与延迟补偿 阵元位置(间距 d) 0 1 2 3 4 入射方向 θ₀ τ = d·sinθ₀/c 各通道时延补偿 τₙ → 相干求和 Σ 归一化波束图 B(θ)(dB) θ 0 dB −20 −40 0° −60° +60° 主瓣指向 θ₀ 第一旁瓣 ≈ −13.2 dB −3 dB 主瓣宽度 w = a(θ₀) = [1, e^{−j2π(d/λ)sinθ₀}, …]ᵀ ,B(θ) = |wᴴa(θ)|² / (wᴴw·aᴴa)

四、CBF 仿真实现

下面给出一段可直接运行的 Python 示例,参数为教学假设:N = 16 元 ULA,f₀ = 3 kHz,c = 1500 m/s,d = λ/2 = 0.25 m,设计指向 θ₀ = 20°,扫描范围 −90°~90°。该示例用于演示流程与读图方法,结果数值随参数变化,并非实测数据。

import numpy as np
import matplotlib.pyplot as plt

N, f0, c = 16, 3000.0, 1500.0
lam = c / f0
d = lam / 2
theta0 = np.deg2rad(20)
scan = np.deg2rad(np.arange(-90, 91, 0.5))

def steering(theta):
    n = np.arange(N)
    return np.exp(-1j * 2 * np.pi * d / lam * n * np.sin(theta))

w = steering(theta0) / N          # 归一化匹配权
B = np.zeros_like(scan)
for i, th in enumerate(scan):
    a = steering(th)
    B[i] = np.abs(np.vdot(w, a))**2 / (np.vdot(w, w).real * np.vdot(a, a).real)

B_dB = 10 * np.log10(B + 1e-12)
plt.plot(np.rad2deg(scan), B_dB)
plt.xlabel('方位角 θ (°)'); plt.ylabel('归一化响应 (dB)')
plt.grid(True); plt.show()

实现中有三处容易出错。第一,导向向量的符号约定必须与波束图定义一致:若 a(θ) 用 e^{−j…},则 w 取 a(θ₀) 的共轭转置作用于 x,即 y = wᴴx;符号反了会导致主瓣指向镜像到 −θ₀。第二,归一化分母要同时除以 wᴴw 与 aᴴa,否则不同角度下响应幅度不可比。第三,扫描步长过粗会漏掉主瓣峰值,建议不大于 0.5°。

五、结果判读与常见问题

运行上述代码后,应观察到:主瓣峰值出现在 20°,峰值归一化为 0 dB;第一旁瓣约 −13 dB;−3 dB 宽度约 6°~7°(随 N 与 d/λ 变化)。若主瓣出现在 −20°,说明导向向量符号约定与求和式不一致;若在 ±60° 附近出现与主瓣等高的峰,说明 d 超过 λ/2 产生了栅瓣;若旁瓣整体偏高,需检查是否误用了未归一化的权或阵列存在幅度误差。

工程上常把 CBF 作为基线:加窗(如汉明窗)可将旁瓣压到 −40 dB 量级,但主瓣会展宽约 1.3~1.5 倍;这是旁瓣抑制与分辨力之间的经典折中,后续自适应波束形成正是为突破这一折中而引入的。

把本节串起来看:几何时延决定了“往哪个方向对齐”,权向量把时延翻译成复加权,波束图则把权向量的效果可视化为主瓣、旁瓣与栅瓣。掌握这三者的对应关系,就能在仿真中通过改一个参数、看一处图形,快速定位问题所在。