4、经典波束形成器:延迟-求和(Delay-and-Sum)波束形成器的原理、实现与性能分析

延迟-求和(Delay-and-Sum, DAS)波束形成器是阵列信号处理中最基础、最直观的波束形成算法。它的核心思想并不复杂:通过人为地对各阵元接收信号施加不同的时间延迟(或相移),使得来自期望方向的信号在叠加时同相相加,从而获得阵列增益;而来自其他方向的干扰和噪声因相位不一致而相互抵消或削弱。理解DAS是掌握后续自适应波束形成、MVDR、LCMV等高级算法的基础。本章将从原理、实现、性能边界到工程实战,系统拆解这一经典算法。

DAS波束形成器信号链路与几何关系 平面波入射方向 θ=30° 阵元1 阵元2 阵元3 阵元4 d d d 延迟补偿网络 τ_n = (n-1)·d·sinθ/c 各阵元信号对齐到同一波前 Σ y(t) = Σ w_n·x_n(t-τ_n) 关键参数 • 阵元数 M = 4 • 阵元间距 d = λ/2 • 采样率 fs = 10 MHz • 波束指向 θ₀ = 30° 波束方向图 主瓣宽度 ≈ 0.886λ/(M·d·cosθ)

上图展示了DAS波束形成器的核心信号链路。平面波以角度θ入射到均匀线阵(ULA)上,由于各阵元空间位置不同,波前到达各阵元的时间存在差异。DAS的核心就是通过延迟补偿网络,将各阵元信号在时间上对齐,然后加权求和。下面我们深入剖析其数学原理与工程实现。

4.1 核心原理:从时间对齐到空间滤波

考虑一个M元均匀线阵,阵元间距为d。假设远场窄带信号s(t)以角度θ入射,则第n个阵元接收到的信号可以表示为:

x_n(t) = s(t - τ_n) + n_n(t),  n = 0, 1, ..., M-1

其中,τ_n = n·d·sinθ/c 是第n个阵元相对于参考阵元(第0个阵元)的时间延迟,c为信号传播速度(声学中为声速,射频中为光速),n_n(t)为第n个阵元上的噪声。DAS波束形成器的输出为:

y(t) = (1/M) · Σ_{n=0}^{M-1} w_n · x_n(t - τ_n')

式中,τ_n' = n·d·sinθ₀/c 是补偿延迟,θ₀为波束指向方向;w_n为幅度加权系数(通常为均匀加权w_n=1,或使用窗函数如汉明窗、泰勒窗以降低旁瓣)。当θ₀ = θ时,各阵元信号在时间上完全对齐,同相叠加,输出信号功率最大;当θ₀ ≠ θ时,信号无法对齐,叠加后部分抵消,输出功率下降。这就是DAS实现空间滤波的本质——通过时间延迟补偿实现方向选择性。

关键理解:DAS在时域操作,但等效于频域的相位对齐。对于窄带信号,时间延迟τ等价于相移e^{-j2πfτ}。因此,DAS的权向量可以写为 w = [1, e^{-jφ}, ..., e^{-j(M-1)φ}],其中φ = 2πf·d·sinθ₀/c。这种相位对齐方式使得阵列在θ₀方向形成主瓣。

4.2 实现方法:从理论到代码的完整链路

DAS的工程实现分为三个关键步骤:延迟计算、信号插值、加权求和。下面给出一个完整的Python实现示例,使用均匀线阵模拟窄带信号接收。

import numpy as np
from scipy.signal import fftconvolve

def das_beamformer(x, fs, d, theta_deg, c=343.0):
    """
    延迟-求和波束形成器
    参数:
        x: 输入信号矩阵,shape (M, N),M为阵元数,N为采样点数
        fs: 采样率 (Hz)
        d: 阵元间距 (m)
        theta_deg: 波束指向角度 (度)
        c: 信号传播速度 (m/s)
    返回:
        y: 波束输出信号,shape (N,)
    """
    M, N = x.shape
    theta = np.deg2rad(theta_deg)
    # 1. 计算各阵元补偿延迟(以采样点为单位)
    tau = np.arange(M) * d * np.sin(theta) / c
    tau_samples = tau * fs
    
    # 2. 对每个阵元进行分数延迟补偿(使用线性插值)
    y = np.zeros(N)
    for n in range(M):
        # 整数部分和小数部分
        int_delay = int(np.floor(tau_samples[n]))
        frac_delay = tau_samples[n] - int_delay
        # 对信号进行移位和插值
        x_shifted = np.roll(x[n], -int_delay)
        if frac_delay > 0:
            # 线性插值:y[n] = (1-frac)*x[n] + frac*x[n+1]
            x_next = np.roll(x[n], -int_delay-1)
            x_shifted = (1-frac_delay) * x_shifted + frac_delay * x_next
        y += x_shifted
    
    # 3. 取平均(归一化)
    y = y / M
    return y

# 示例:模拟4元阵列接收30°方向信号
fs = 10000  # 10 kHz采样率
M = 4       # 4个阵元
d = 0.05    # 阵元间距5cm(对应1.7kHz半波长)
t = np.arange(0, 0.1, 1/fs)
f_signal = 1700  # 信号频率1.7kHz
s = np.sin(2*np.pi*f_signal*t)

# 构造各阵元接收信号(含噪声)
theta_true = 30  # 真实入射角
tau_true = np.arange(M) * d * np.sin(np.deg2rad(theta_true)) / 343
x = np.zeros((M, len(t)))
for n in range(M):
    delay_samples = int(tau_true[n] * fs)
    x[n] = np.roll(s, delay_samples) + 0.1*np.random.randn(len(t))

# 波束形成
y_beam = das_beamformer(x, fs, d, 30)
print(f"输出信噪比提升: {10*np.log10(np.var(y_beam)/np.var(x[0])):.2f} dB")

上述代码展示了DAS的完整实现流程。值得注意的是,分数延迟补偿是工程中的关键难点。当延迟不是采样周期的整数倍时,需要采用插值方法(线性插值、sinc插值、Farrow滤波器等)。线性插值简单但精度有限,sinc插值精度高但计算量大。在实际系统中,应根据信号带宽和精度要求选择合适的插值方法。

4.3 性能分析:波束方向图与关键指标

DAS的性能主要通过波束方向图(Beam Pattern)来评估。方向图描述了阵列输出功率对入射角度的响应。对于均匀加权的M元ULA,其归一化方向图可以解析表示为:

B(θ) = |sin(M·π·d·(sinθ - sinθ₀)/λ) / (M·sin(π·d·(sinθ - sinθ₀)/λ))|

下表总结了DAS的关键性能指标及其影响因素:

性能指标 公式/表达式 影响因素 工程权衡
3dB主瓣宽度 BW ≈ 0.886λ/(M·d·cosθ₀) 阵元数M、阵元间距d、指向角θ₀ M越大主瓣越窄,但阵列孔径增大
第一旁瓣电平 -13.3 dB(均匀加权) 加权窗函数 加窗可降低旁瓣,但主瓣变宽
阵列增益 G = 10·log₁₀(M) dB(各向同性噪声) 阵元数M、噪声相关性 增益随M线性增加(对数域)
栅瓣出现条件 d ≥ λ/2 时可能出现 阵元间距d、工作频率f d < λ/2 避免栅瓣,但阵列物理尺寸受限
最大无模糊延迟 τ_max = (M-1)·d/c 阵列孔径 影响可处理的信号带宽

从表中可以看出,DAS的性能受到阵元数、阵元间距和加权方式的共同制约。均匀加权提供最窄的主瓣,但旁瓣较高;采用窗函数(如汉明窗、布莱克曼窗)可以显著降低旁瓣,但会以主瓣展宽为代价。在实际系统设计中,需要根据应用场景权衡这些指标。

栅瓣风险:当阵元间距d > λ/2时,方向图会出现与主瓣等高的栅瓣(Grating Lobes),导致空间模糊。例如,在5GHz频段(λ=6cm),若阵元间距取10cm,则会在±90°范围内出现多个栅瓣。设计时必须确保d ≤ λ_min/2,其中λ_min是工作频带内的最短波长。

4.4 实战案例:麦克风阵列语音增强系统

我们以一个实际的智能音箱麦克风阵列设计为例,完整展示DAS的工程应用。系统要求:在3米距离内清晰拾取用户语音,抑制环境噪声和混响。

系统参数:采用6元均匀圆阵(UCA),半径r=4.5cm,工作频带300Hz-3.4kHz(语音频带),采样率16kHz。选择圆阵是因为其360°全向覆盖能力,适合智能音箱的任意方向唤醒场景。

初始现象与目标:单麦克风在安静环境下信噪比约20dB,但在客厅环境(空调噪声+电视背景音)下降至5dB,语音可懂度严重下降。目标是通过DAS波束形成将信噪比提升至15dB以上,同时保持语音自然度。

关键参数计算:

# 圆阵DAS波束形成关键参数
import numpy as np
M = 6  # 阵元数
r = 0.045  # 半径4.5cm
fs = 16000  # 采样率
c = 343  # 声速
f_max = 3400  # 最高工作频率
lambda_min = c / f_max  # 最短波长
print(f"最短波长: {lambda_min*100:.1f} cm")
# 圆阵相邻阵元弧长间距
arc_spacing = 2*np.pi*r/M
print(f"相邻阵元弧长: {arc_spacing*100:.1f} cm")
# 检查是否满足空间采样定理
print(f"弧长/最短波长: {arc_spacing/lambda_min:.2f} (应≤0.5)")

分析判断过程:计算发现弧长间距为4.71cm,而最短波长为10.1cm,比值0.47 < 0.5,满足空间采样定理,不会出现栅瓣。但圆阵的DAS实现比线阵复杂,需要将每个阵元的坐标投影到波束方向。对于圆阵,第n个阵元的位置角为φ_n = 2πn/M,波束指向角为θ₀,则补偿延迟为:

τ_n = (r·cos(θ₀ - φ_n)) / c

实际操作步骤:首先,在DSP上实现实时DAS波束形成器,使用128点FIR滤波器进行分数延迟补偿(比线性插值精度高)。其次,采用汉明窗加权以降低旁瓣。最后,加入自适应噪声估计器,在无语音段更新噪声功率谱,用于后续的维纳滤波后处理。

结果对比:实测数据显示,DAS波束形成后,目标方向(用户说话方向)信号增益为10·log₁₀(6)=7.8dB,噪声(来自其他方向)被抑制约5dB,综合信噪比提升约12.8dB。从5dB提升至17.8dB,满足15dB的设计目标。语音可懂度测试(STOI)从0.62提升至0.85。

风险与代价:DAS对波束指向误差敏感。当用户偏离波束中心5°时,高频段(3kHz)增益下降约3dB。此外,混响环境下DAS的性能退化明显,因为反射声从不同方向到达阵列,无法被单一方向的波束有效抑制。这提示我们,在复杂声学环境中,可能需要更高级的自适应算法。

工程经验:DAS是稳健性最好的波束形成器,对阵列校准误差、通道失配不敏感。在系统调试初期,建议先用DAS验证阵列硬件是否正常,再切换到自适应算法。如果DAS性能都不达标,问题大概率出在硬件而非算法。

4.5 常见误区与总结复盘

在DAS的学习和工程应用中,以下误区需要特别注意:

  • 误区一:认为DAS只适用于窄带信号。实际上,DAS在时域操作,对宽带信号同样适用,只是延迟补偿需要精确到分数采样点。宽带DAS的性能取决于延迟补偿精度,而非信号带宽本身。
  • 误区二:忽略阵元间距的频率依赖性。阵元间距d是物理固定的,但λ随频率变化。设计时需保证在整个工作频带内d ≤ λ_min/2,否则高频段会出现栅瓣。
  • 误区三:均匀加权一定最优。均匀加权提供最大阵列增益,但旁瓣最高。在强干扰环境下,高旁瓣可能导致干扰泄漏。应根据干扰环境选择合适的窗函数。
  • 误区四:延迟补偿精度越高越好。过高的插值阶数(如高阶sinc插值)会引入额外计算延迟和数值噪声。工程上应根据信号最高频率和所需信噪比确定插值精度。