假设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)e−jωtdt
= ∫ − ∞ + ∞ s ( t − τ m ) e − j ω t d t =\int_{-\infty }^{+\infty} s(t-\tau_m)e^{-j\omega t}dt =∫−∞+∞s(t−τm)e−jωtdt
= S ( ω ) e − j ω τ m =S(\omega)e^{-j\omega\tau_m} =S(ω)e−jωτ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 e−jωτ1 e−jωτ2 … e−jωτM−1]
其中,定义
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 e−jωτ1 e−jωτ2 … e−jωτM−1]
为阵元的响应向量(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波束图代码如下
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阵元均匀线阵方向图')
跟上面的分析相同,关键地方就是写出阵列流形向量和权值向量
假设 M M M阵元均匀圆阵,半径为 R R R,阵元在 x − y x-y x−y平面上,则各个阵元相对 x x x轴的夹角 γ m = 2 π m / M \gamma_m=2\pi m/M γm=2πm/M,均匀圆阵中,一般以圆心为参考,要写出阵列方向向量,就是要计算当单位平面波以夹角 ( ϕ , θ ) (\phi,\theta) (ϕ,θ)入射时,各阵元相对圆心接收到的信号时间差。
计算上图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=Rcos(ϕ−γm)sin(θ)/c
最后,根据上面线阵的相同分析,可以直接写出均匀圆阵的的阵列流形向量如下
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=⎣⎢⎢⎡e−jωRcos(ϕ−γ0)sin(θ)/c e−jωRcos(ϕ−γ1)sin(θ)/c ... e−jωRcos(ϕ−γM−1)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))
另外,圆阵是面阵,可以进行二维空间搜索,简单改下程序,画出三维图
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)时的阵列方向图如下所示
上图中可以看到,均匀圆阵的延时累加波束形成在俯仰角上的精度很差,在0~40度的范围内几乎无法分辨
上面程序中都指定了一个固定频率,做的是窄带波束形成,而语音信号为宽带信号,此时的波束图应该同时是入射方向跟信号频率的函数。
宽带波束形成可以在时域和频域实现,,下面分别简单介绍
时域处理就是根据某一最优准则设计出一组FIR系数,或者叫sensor delay-lines (SDLs),还有叫tapped delay-lines
(TDLs),框图如下,一些时域LCMV、MVDR都属于这种框架
频域处理是利用DFT,将信号变换到频域,然后在每个频率带上使用窄带的方法做波束形成,最后将各个子带信号相加变回到时域,框图如下
Design of robust high-order superdirectivity for circular arrays with sensor gain and phase errors。 ↩︎