均匀直线阵的常规波束形成matlab

常规波束形成概述

  • 波束形成是将基阵各阵元输出进行一定的处理,从而形成基阵空间指向性的技术。一个波束形成器可以对空间某方位的信号有响应,而抑制其他方位的信号,所以又被称为空域滤波。一般分为常规波束形成(CBF)和自适应波束形成(ABF)。
  • 常规波束形成较为基础,一般又可以根据实现的途径不同,分为时延波束形成和频移波束形成。

时延波束形成

  • 在各阵元间添加时延使波束控制于不同方位的方法成为时延波束形成。设定一个目标方向,当信号来源方向在该目标方向时,响应最大;信号来源于其他方向时,响应较小。将这种响应大小随空间角度的变化作图,就是该波束形成器的波束图。
    均匀直线阵的常规波束形成matlab_第1张图片

  • 如图,对于均匀直线阵,相邻阵元间存在时延。对于任意角度theta,相邻阵元时延差为:
    在这里插入图片描述

  • 其中d为阵元间距,theta为信号来源方向与基阵法线所成夹角。以阵元0为参考阵元,其表达式为:
    在这里插入图片描述

  • 引出各阵元的方向向量,各阵元相差一个时延,以五元阵为例,依次写出为一个行向量:
    均匀直线阵的常规波束形成matlab_第2张图片

  • 各阵元的信号即为:
    均匀直线阵的常规波束形成matlab_第3张图片

  • 为了使目标方向形成最大响应,得到最优加权向量,对各阵元补偿指定方向的相位,构成加权向量。
    均匀直线阵的常规波束形成matlab_第4张图片

  • 输出信号为:
    在这里插入图片描述
    所以,响应归一化后只需要:
    在这里插入图片描述
    这就是各方向的响应。

  • 运行结果:
    均匀直线阵的常规波束形成matlab_第5张图片

频域波束形成

频域波束形成是对各阵元信号的谱线进行频移再形成。以M元直线阵、N点信号为例:

  • 对各阵元信号进行目标方向的相位补偿

  • 对该补偿后的信号进行快速傅里叶变换,得到了M*N维矩阵的频谱

  • 对任意角度求取响应:任一角度上每个阵元信号所在谱线进行该角度的频移,如图,时域时延对应的频域乘以该部分。
    在这里插入图片描述

  • 将各阵元某一谱线求和,对各谱线求和,得到该角度的响应。

运行结果如下:
均匀直线阵的常规波束形成matlab_第6张图片

两种波束形成方法比较

  • 研究两者形成过程可以看出

时域波束形成对整个信号进行时延,直接波束形成;
频域波束形成只选取了信号所在频率进行波束形成。
这里我并没有给信号加噪声,二者表现不明显,但是从过程中可以推测出,如果加上噪声,频域波束形成无疑会筛选掉非信号频带的噪声,波束形成效果会更好!

此处附上代码,信号处理新人,望大家指正:

%% 时延波束形成
clc;clear;close all;
c=1500;f0=800;
d=c/f0/5;fs=40000;
N=2^10;M=5;
t=(0:N-1)/fs;
% st=rand(1,M);
xt=cos(2*pi*f0*t);
theta=-90:0.1:90;theta0=30;
for i=1:M
    a(i,:)=exp(1j*2*pi*(i-1)*d*sind(theta));
    w(1,i)=exp(1j*2*pi*(i-1)*d*sind(theta0));
end
BP=conj(w)*a/M;
figure(1)
subplot(121)
plot(theta,real(BP));title('时域波束形成波束图');xlabel('角度(°)');ylabel('幅值');
subplot(122)
polarplot(theta*pi/180,real(BP));title('时域波束形成极坐标图');

%% 频域波束形成
clc;clear;close all;
c=1500;f0=800;fs=40000;%水下声速、中心频率、采样频率
ome=2*pi*f0;%角频率
d=c/f0/2;%阵元间距
N=2^10;%采样点数
M=5;%阵元个数
t1=(0:2*N-1)/fs;
s0=cos(ome*t1);%参考信号
theta0=30;%波束形成目标角度
theta=-60:0.1:60;%刻画角度坐标
f=(0:N-1)*fs/N;%刻画频率坐标
for i=1:M
    tao(i)=round((i-1)*d*sind(theta0)/c*fs);%各阵元在目标方向时延差取整,在整个信号上截取时延后的信号
    s(i,:)=s0(1,tao(i)+1:tao(i)+N);%生成各阵元时域信号
    sf(i,:)=fft(s(i,:),N);%转换到频域
end
figure(1)
plot(f,real(sf));legend('阵元1','阵元2','阵元3','阵元4','阵元5');

fl=790;fh=810;%筛选出信号所在频率谱线进行波束形成
n1=round(fl/fs*N);n2=round(fh/fs*N);
for i=1:length(theta)
    for j=n1:n2
        for k=1:M
            n11(i)=(k-1)*d*sind(theta(i))/c*fs/N;%对任意角度在该阵元上的时延转换为时域上平移的点
            sf1(k)=sf(k,j)*exp(-1j*2*pi*j*n11(i));%时域时延,频域相移
        end
        s1(j)=sum(sf1);%该谱线上各阵元求和
    end
    s2(i)=sum(abs(s1(j))^2);%该角度上各谱线求和
end
figure(2)
subplot(121)
plot(theta,s2/max(s2));title('频域波束形成波束图');xlabel('角度(°)');ylabel('幅值');
subplot(122)
polarplot(theta*pi/180,s2/max(s2));title('频域波束形成极坐标图');

你可能感兴趣的:(水声工程,matlab,数字信号处理,matlab)