【Get深一度】自适应波束形成算法 之 算法篇【二】(Adaptive Beamforming Algorithm)

2023-05-16

   神器镇楼!

一、自适应波束形成阶段划分:

自适应阵列信号处理的概念最早由 Van Atta 20世纪 60年代末提出,本文总结了前30年的研究成果,将自适应阵列信号处理划分为三个阶段

====第一阶段:(20世纪 60年代):

           》主要为阵列天线的主波束进行控制方面,还不能完全称它为自适应天线阵;

====第二阶段:(20世纪70年代):

          》主要研究集中在自适应零陷生成技术,如自适应置零技术、自适应旁瓣对消技术等,自适应干扰置零技术是这个阶段的重

             要技术进步,它能够在未知干扰方向的情况下,根据外部数据采样特性,自适应在干扰方向形成零点从而抑制干扰。

====第三阶段:(20世纪 80年代):

          》主要研究空间谱估计技术,这个时期超分辨率的测向算法得到了广泛研究和迅速发展。另外,Van VeenGodara

              HaykiIl等人对自适应阵列的的综述文章,系统地论述和总结了自适应阵列技术的研究进展情况及各种主要技术的应用。

-----------------------------------------------------------------------------------------------------

早期的波束形成技术主要适用于窄带信号,现在越来越多信号为宽带信号。1972 Frost 提出了宽带数字波束形成的结构,之后宽带自适应波束形成技术发展很快,学者提出了一些宽带波束形成算法。

------------------------------------------------------------------------------------------------------

目前,宽带信号的自适应波束形成算法的研究分为两类:

  •         》一是以 Frost提出的宽带自适应阵列处理结构为基础,称为空时处理方法;

  •         》二是将宽带信号先进行 FFT变换,得到多个频率子带,然后对各个频率的信号分别进行窄带自适应波束形成处理,此方法称

  •                为频域处理方法。

  •                     -->频域处理方法又根据在频域是否采用聚焦运算可分为两大类:

  •                            ==》》第一类是非相干信号子空间处理方法(ISM, Incoherent Signal-subspace Method)

  •                            ==》》第二类是相干信号子空间处理方法(CSM, Coherent Signal-subspace Method)

二、自适应波束形成的物理意义:

虽然阵列天线的方向图是全向的,但阵列的输出经过加权求和后,却可以被调整到阵列接收的方向,同时增益聚集在一个方向上,相当于形成一个“波束”,这就是波束形成的物理意义所在。

三、相干信号子空间方法CSM(coherent signal-subspace method)

      相干信号子空间处理步骤:

             >> 1.FFT处理将宽带接收信号划分为若干个的窄带信号

             >> 2. 聚焦矩阵把不同频率的协方差矩阵聚焦到选定的参考频率上

             >> 3. 在参考频率上利用窄带技术做DBF

---------------------------------------------------------------------------------------------------

 !@#¥%!@#¥%  宽带波束形成技术是目前研究的一个重点方向。作者对宽带波束形成方法的研究还处于较初步阶段,只对于频域算法做了研究,仿真了CSM算法。!@#¥%!@#¥%

---------------------------------------------------------------------------------------------------

四、CSM算法MATLAB仿真与分析

一、

% 名称: 基于CSM算法的自适应波束形成仿真
% 作者: _Sure_
% 时间: 2016.05.22
close all;
clear all;
clc;
  %{
        close all 是关闭所有窗口(程序运行产生的,不包括命令窗,editor窗和帮助窗)
        clear all是清除所有工作空间中的变量
        clc 是清除命令行
        clear 是清除那一堆存在内存里的数据的,
        close 是关闭打开了的文件,一般文件开头写
  
  %}

             二、

%---------------------------------start-----------------------------------%
%-------------------------------基本参数设置-------------------------------%
%-------------------------------------------------------------------------%
j=sqrt(-1); %复数虚部
M=20;      %本程序阵元数
fl=20;     %干扰频率下限
fh=120;    %干扰频率上限
seta_S_reg=10*pi/180;  % 信号方向入射角度
seta_J_reg=20*pi/180;  % 干扰方向入射角度
seta_reg=[seta_S_reg seta_J_reg]; %入射角度角度范围
Power_s=10;  %信号功率
Power_j=100;   %干扰功率
d_l=1/2;
N=eye(M,M);  
  %{
        eye(M,N) 生成一个M行M列的"单位"矩阵,主对角线元素为1,其余元素为0。
        example1
        >> eye(3,3)
        ans =
             1     0     0
             0     1     0
             0     0     1
  %}
fc=100;%采样频率
fr=fc;
num_BW=40;%数字带宽40
%-------------------------------end---------------------------------------% 

           三、

%-------------------------------------------------------------------------%
%------------------------生成聚焦频点的阵列流型-----------------------------%
A_f_fc=exp(j*pi*(0:M-1).'*fr/fc*sin(seta_reg));
T_f_sub=zeros(M,M,num_BW);%(阵元数,阵元数,频点数)
  %{
        zeros(M,M,N)是产生N个M*M的全0方阵(零矩阵),每个元素都为零,一般用来定义一个
        向量结构,用来存储数值 
        example2
        >>zeros(3,3,2)
        ans(:,:,1) =
             0     0     0
             0     0     0
             0     0     0

        ans(:,:,2) =
             0     0     0
             0     0     0
             0     0     0
  %}

R=zeros(M,M);
  %{
        zeros(M,M)是产生一个M*M的全0方阵(零矩阵),每个元素都为零,一般用来定义一个
        向量结构,用来存储数值 
        example3
        >>zeros(3,3)
        ans =
             0     0     0
             0     0     0
             0     0     0
  %}

%-----------------------生成每个频点的阵列流型-----------------------------%
for i=1:num_BW %频宽宽度
   f_sub(i)=fl+(fh-fl)*i/40;%%干扰频率上、下限之差/num_BW   步进频率
   a_s_angle=pi*f_sub(i)/fc*sin(seta_S_reg);
   a_j_angle=pi*f_sub(i)/fc*sin(seta_J_reg);
   a_s=exp(j*a_s_angle*(0:M-1)).';
   a_j=exp(j*a_j_angle*(0:M-1)).';
   Rx_sub=Power_s*a_s*a_s'+Power_j*a_j*a_j'+N;
   A_f_sub=exp(j*pi*(0:M-1).'*f_sub(i)/fc*sin(seta_reg));
   E=A_f_sub*A_f_fc';
   [U,segma,V]=svd(E);
     %{
            奇异值分解函数svd格式 s = svd (X)  %返回矩阵X 的奇异值向量 
=========== [U,S,V] = svd(X) %返回一个与X同大小的对角矩阵S,两个酉矩阵U和V,
            且满足=U*S*V'。
              若A为m×n阵,则U为m×m阵,V为n×n阵。
              奇异值在S的对角线上,非负且按降序排列。
=========== [U,S,V] = svd (X,0) %得到一个“有效大小”的分解,只计算出矩阵U 
             的前n列,矩阵S的大小为n×n。
            example4
                A=[1 2;3 4;5 6;7 8];  %m=4;n=2
                [U,S,V]=svd(A)

                U =
                   -0.1525   -0.8226   -0.3945   -0.3800
                   -0.3499   -0.4214    0.2428    0.8007
                   -0.5474   -0.0201    0.6979   -0.4614
                   -0.7448    0.3812   -0.5462    0.0407

                S =
                   14.2691         0
                         0    0.6268
                         0         0
                         0         0
   
                V =
                   -0.6414    0.7672
                   -0.7672   -0.6414
   
   -----------------------------------------------------------------------
                A=[1 2;3 4;5 6;7 8];
                [U,S,V]=svd(A,0)

                U =
                   -0.1525   -0.8226
                   -0.3499   -0.4214
                   -0.5474   -0.0201
                   -0.7448    0.3812

                S =
                   14.2691         0
                         0    0.6268

                V =
                   -0.6414    0.7672
                   -0.7672   -0.6414
                      %}

           %[segma,index_segma]=sort(diag(segma),'descend');
   T_f_sub(:,:,i)=V*U';
   R_sub=T_f_sub(:,:,i)*Rx_sub*T_f_sub(:,:,i)';
   R=R+R_sub;
end
%-------------------------------end---------------------------------------%


              四、
             
 

%---------------------------------start-----------------------------------%
%-------------------------------------------------------------------------%
a_s_angle_fc=pi*fr/fc*sin(seta_S_reg);
a_s_fc=exp(j*a_s_angle_fc*(0:M-1)).';
%a_s_fc=exp(j*pi*sin(seta_S_reg)*(0:M-1)).';
R=R/num_BW;
W_opt=inv(R)*a_s_fc./(a_s_fc'*inv(R)*a_s_fc);
D_angle=linspace(-pi/4,pi/4,2000);
angle=pi*sin(D_angle);
f=abs(W_opt'*(exp(j).^((0:M-1).'*angle)));
F=20*log10(f/max(f));
%-------------------------------end---------------------------------------%

         五、三组对比图片(阵元数、干扰频率范围、相对带宽):

          第一组:阵元数不同

    

         第二组:干扰频率范围不同


        第三组:相对宽带不同


转载请注明来源,么么哒!原创声明:本文为-Sure-原创作品,转载时请注明“转自-Sure-”及原文链接。





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Get深一度】自适应波束形成算法 之 算法篇【二】(Adaptive Beamforming Algorithm) 的相关文章

随机推荐