Beamforming

1. 阵列简介

1.1 均匀线阵

Beamforming_第1张图片

假设0、1、…M-1阵元的均匀线阵中,参考阵元接收的信号为 s ( t ) s(t) s(t),则第 m m m个阵元接收到的信号为 s ( t − τ m ) s(t-\tau_m) s(tτm),傅里叶变换如下

S m ( ω ) = ∫ − ∞ + ∞ s m ( t ) e − j ω t d t S_m(\omega)=\int_{-\infty }^{+\infty} s_m(t)e^{-j\omega t}dt Sm(ω)=+sm(t)ejωtdt

                              = ∫ − ∞ + ∞ s ( t − τ m ) e − j ω t d t =\int_{-\infty }^{+\infty} s(t-\tau_m)e^{-j\omega t}dt =+s(tτm)ejωtdt
   
                               = S ( ω ) e − j ω τ m =S(\omega)e^{-j\omega\tau_m} =S(ω)ejωτm

则阵列接收的信号可以表示为

X ( ω ) = S ( ω ) [ 1   e − j ω τ 1   e − j ω τ 2   …   e − j ω τ M − 1 ] X(\omega)=S(\omega)[1 e^{-j\omega\tau_1} e^{-j\omega\tau_2} … e^{-j\omega\tau_{M-1}} ] X(ω)=S(ω)[1 ejωτ ejωτ  ejωτM1]

其中,定义

a ⃗ = [ 1   e − j ω τ 1   e − j ω τ 2   …   e − j ω τ M − 1 ] \vec{a}=[1 e^{-j\omega\tau_1} e^{-j\omega\tau_2} … e^{-j\omega\tau_{M-1}} ] a =[1 ejωτ ejωτ  ejωτM1]

为阵元的响应向量(array response vector),也称作阵列流形(array manifold vector)。
  同时,也定义波数(wave number)如下
κ = ω c a ⃗ \kappa=\frac{\omega}{c} \vec{a} κ=cωa
其中 ω = 2 π k f s / N f f t \omega=2\pi kf_s/N_{fft} ω=2πkfs/Nfft为数字角频率
  在delauy-and-sum beamformer中,每个阵元的权值即为该阵元相对参考阵元需要补偿的相位延迟,因此权值即为阵列流形的共轭转置
  根据上面的分析,写出窄带线性阵列的delay-and-sum波束图代码如下

delay-and-sum beamformer

M=8;                 % 阵元数
c=340;                         % 声速
f = 2125;                      % 信号频率
d = 0.08;                      % 阵元间距
theta=linspace(-pi/2,pi/2,200);% 入射信号角度范围
theta0=30*pi/180;                      % 注视方向
w=exp(1j*2*pi*f*sin(theta0)*[0:M-1]'*d/c);       % 导向向量
p = zeros(length(1:length(theta)),1);
for  j=1:length(theta)                                     % 角度扫描
    a=exp(-1j*2*pi*f*sin(theta(j))*[0:M-1]'*d/c);% 入射信号方向向量
    p(j)=sum(w.*a)/M;                                        % 延时-求和
end
% 画图
figure;
plot(theta/pi*180,abs(p)),grid on
xlabel('degree')
ylabel('amplitude')
title('8阵元均匀线阵方向图')


方向图如下
Beamforming_第2张图片

1.2 均匀圆阵

跟上面的分析相同,关键地方就是写出阵列流形向量和权值向量
  假设 M M M阵元均匀圆阵,半径为 R R R,阵元在 x − y x-y xy平面上,则各个阵元相对 x x x轴的夹角 γ m = 2 π m / M \gamma_m=2\pi m/M γm=2πm/M,均匀圆阵中,一般以圆心为参考,要写出阵列方向向量,就是要计算当单位平面波以夹角 ( ϕ , θ ) (\phi,\theta) (ϕθ)入射时,各阵元相对圆心接收到的信号时间差。

Beamforming_第3张图片

计算上图1

中的距离 d d d,就要计算这个余弦角 β \beta β,由三余弦定理(查百度才知道叫这个名字,逃~)有

c o s ( β ) = c o s ( ϕ − γ m ) s i n ( θ ) cos(\beta)=cos(\phi-\gamma_m)sin(\theta) cos(β)=cos(ϕγm)sin(θ)

然后,就可以计算得到距离差,得到时间差

τ m = R c o s ( ϕ − γ m ) s i n ( θ ) / c \tau_m=Rcos(\phi-\gamma_m)sin(\theta)/c τm=cos(ϕγm)sin(θ)

最后,根据上面线阵的相同分析,可以直接写出均匀圆阵的的阵列流形向量如下

a ⃗ = [ e − j ω R c o s ( ϕ − γ 0 ) s i n ( θ ) / c   e − j ω R c o s ( ϕ − γ 1 ) s i n ( θ ) / c   . . .   e − j ω R c o s ( ϕ − γ M − 1 ) s i n ( θ ) / c   ] \vec{a}=\begin{bmatrix}e^{-j\omega Rcos(\phi-\gamma_0)sin(\theta)/c}  \\ e^{-j\omega Rcos(\phi-\gamma_1)sin(\theta)/c}  \\ ...  \\ e^{-j\omega Rcos(\phi-\gamma_{M-1})sin(\theta)/c}  \end{bmatrix} a =ejωcos(ϕγ0)sin(θ)/c ejωcos(ϕγ1)sin(θ)/c ... ejωcos(ϕγM1)sin(θ)/c 

然后,写出均匀圆阵的delay-and-sum波束图就简单了

M=8;                 % 阵元数
c=340;                         % 声速
f = 2125;                      % 信号频率
r = 0.08;                      % 阵元间距
phi=linspace(0,2*pi,360);% 入射信号角度范围

theta = 80*pi/180; %固定一个俯仰角
gamma = (0:360/M:360-360/M)*pi/180;%麦克风位置

tao = r*sin(theta)*cos(angle(1)-gamma)/c;     %方位角 0 < angle <360

phi0=60*pi/180;                      % 注视方向
w=exp(1j*2*pi*f*r*cos(phi0-gamma)*sin(theta)/c);       % 导向向量
p = zeros(length(1:length(phi)),1);
for  j=1:length(phi)                                     % 角度扫描
    a=exp(-1j*2*pi*f*r*cos(phi(j)-gamma)*sin(theta)/c);% 入射信号方向向量
    p(j)=sum(w.*a)/M;                                        % 延时-求和
end
% 画图
figure;
plot(phi/pi*180,abs(p)),grid on
xlabel('degree')
ylabel('amplitude')
title('均匀圆阵方向图')

%画极坐标图
figure,polarplot(phi,abs(p))

Beamforming_第4张图片

另外,圆阵是面阵,可以进行二维空间搜索,简单改下程序,画出三维图

M=8;                 % 阵元数
c=340;                         % 声速
f = 2125;                      % 信号频率
r = 0.08;                      % 阵元间距
phi=linspace(0,2*pi,360);% 入射信号方位角范围

theta = linspace(0,pi/2,90);% 入射信号俯仰角范围

gamma = (0:360/M:360-360/M)*pi/180;%麦克风位置


phi0=130*pi/180;                      % 注视方向
theta0 = 80*pi/180;

w=exp(1j*2*pi*f*r*cos(phi0-gamma)*sin(theta0)/c);       % 导向向量
p = zeros(length(1:length(phi)),length(theta));
for i = 1:length(theta)
    for  j=1:length(phi)                                     % 角度扫描
        a=exp(-1j*2*pi*f*r*cos(phi(j)-gamma)*sin(theta(i))/c);% 入射信号方向向量
        p(j,i)=sum(a.*w)/M;                                        % 延时-求和
    end
end
% 画图

figure,mesh(abs(p))

注视方向在(130,80)时的阵列方向图如下所示

Beamforming_第5张图片

 上图中可以看到,均匀圆阵的延时累加波束形成在俯仰角上的精度很差,在0~40度的范围内几乎无法分辨

2. 宽带波束形成

  上面程序中都指定了一个固定频率,做的是窄带波束形成,而语音信号为宽带信号,此时的波束图应该同时是入射方向跟信号频率的函数。
宽带波束形成可以在时域和频域实现,,下面分别简单介绍

2.1 时域处理

  时域处理就是根据某一最优准则设计出一组FIR系数,或者叫sensor delay-lines (SDLs),还有叫tapped delay-lines
(TDLs),框图如下,一些时域LCMV、MVDR都属于这种框架

Beamforming_第6张图片

2.2 频域处理

  频域处理是利用DFT,将信号变换到频域,然后在每个频率带上使用窄带的方法做波束形成,最后将各个子带信号相加变回到时域,框图如下
Beamforming_第7张图片



  1. Design of robust high-order superdirectivity for circular arrays with sensor gain and phase errors。 ↩︎

你可能感兴趣的:(Microphone,Array,音频处理,数字信号处理)