4、经典波束形成器:延迟-求和(Delay-and-Sum)波束形成器的原理、实现与性能分析
延迟-求和(Delay-and-Sum, DAS)波束形成器是阵列信号处理中最基础、最直观的波束形成算法。它的核心思想并不复杂:通过人为地对各阵元接收信号施加不同的时间延迟(或相移),使得来自期望方向的信号在叠加时同相相加,从而获得阵列增益;而来自其他方向的干扰和噪声因相位不一致而相互抵消或削弱。理解DAS是掌握后续自适应波束形成、MVDR、LCMV等高级算法的基础。本章将从原理、实现、性能边界到工程实战,系统拆解这一经典算法。
上图展示了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实现空间滤波的本质——通过时间延迟补偿实现方向选择性。
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的性能受到阵元数、阵元间距和加权方式的共同制约。均匀加权提供最窄的主瓣,但旁瓣较高;采用窗函数(如汉明窗、布莱克曼窗)可以显著降低旁瓣,但会以主瓣展宽为代价。在实际系统设计中,需要根据应用场景权衡这些指标。
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的性能退化明显,因为反射声从不同方向到达阵列,无法被单一方向的波束有效抑制。这提示我们,在复杂声学环境中,可能需要更高级的自适应算法。
4.5 常见误区与总结复盘
在DAS的学习和工程应用中,以下误区需要特别注意:
- 误区一:认为DAS只适用于窄带信号。实际上,DAS在时域操作,对宽带信号同样适用,只是延迟补偿需要精确到分数采样点。宽带DAS的性能取决于延迟补偿精度,而非信号带宽本身。
- 误区二:忽略阵元间距的频率依赖性。阵元间距d是物理固定的,但λ随频率变化。设计时需保证在整个工作频带内d ≤ λ_min/2,否则高频段会出现栅瓣。
- 误区三:均匀加权一定最优。均匀加权提供最大阵列增益,但旁瓣最高。在强干扰环境下,高旁瓣可能导致干扰泄漏。应根据干扰环境选择合适的窗函数。
- 误区四:延迟补偿精度越高越好。过高的插值阶数(如高阶sinc插值)会引入额外计算延迟和数值噪声。工程上应根据信号最高频率和所需信噪比确定插值精度。