zoukankan      html  css  js  c++  java
  • 矢量水听器 近场 远场 --------------------常规波束形成,MVDR的比较

    摘自《水平线阵的反卷积常规波束形成》,IRONMAN---------------------------------------------------

      在常规的波束形成中,是将阵列上的每个接收机的同时刻数据乘上一个预设的系数然后求和并最终得到一系列的具有特定指向性的波束。但是由此得到的波束它的主瓣宽度很宽而且旁瓣衰减有限,能量泄漏很严重。为了解决这些问题,许多的学者提出了一些高分辨的波束形成算法,MVDR和DMR就是其中的代表。然而这些算法虽然能够得到很窄的波束宽度和低的旁瓣级,但是需要大量的数据样本来估计数据的协方差矩阵(如MVDR),计算量很大,而且当目标方位变化很快的时候,这种方法的性能将大打折扣甚至变得不稳定。对于DMR其需要事先知道目标的个数这一先验知识,而往往目标的个数事先是未知的,因此它的应用受到了限制。针对这些问题T.C.Yang教授创造性的将解卷积的方法应用到常规波束形成中,效果显著。此方法于2016年首次被提出,文章的题目是Deconvolved Conventional Beamforming for a Horizontal Line Array,在IEEE JOURNAL OF OCEANIC ENGINEERING上发表。为了方便大家阅读,博主将其翻译成了中文版的,如果有什么不对的地方,还请大家批评指正。


            

     

    仿真程序:

    %------------矢量水听器  近场 远场 常规波束形成 MVDR-----0722-----

    clc; clear all; close all;

    %-----------信号模型--------------

    M=12;

    N=1024;

    f0=1000;

    fs=10*f0;

    c=1500;

    lamda=c/f0;   %波长

    w=2*pi*f0;

    k=w/c;

    d=lamda/2;

    t=0:N-1;

    snr=10;%信噪比

    theta=30*pi/180;%入射角度

    A=sqrt(2*10^(snr/10));

    s=A*exp(-j*w*t/fs);

    %----------远场 常规波束形成--------------

    for m=1:M    

    Sp(m,:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))+randn(size(t))/3;    

    Sx(m,:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))*cos(theta)+randn(size(t))/3;    

    Sy(m,:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))*sin(theta)+randn(size(t))/3;

    end

    S=[Sp.',Sx.',Sy.'];

    R=cov(S);

    theta1=-180:180; for i=1:length(theta1)    

    for m=1:M        

    Wp(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180));        

    Wx(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180))*cos(theta1(i)*pi/180);        

    Wy(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180))*sin(theta1(i)*pi/180);    

    end    

    W=[Wp,Wx,Wy];        

    P(i)=W*R*W';    

    Pm(i)=1/(W*(R^-1)*W');

    end

    %-----------归一化-----------------

    pp=max(abs(P));

    P=20*log10(P/pp);

    ppm=max(abs(Pm));

    Pm=20*log10(Pm/ppm);

    %----------------------------------

    figure

    plot(theta1,P);

    title('远场 常规算法波束形成') xlabel('x/角度°') ylabel('y/dB') ;

    %-----------------------------------

    figure

    plot(theta1,Pm);

    title('远场 MVDR算法波束形成') xlabel('x/角度°') ylabel('y/dB')

    %------------------------------------

    figure

    plot(theta1,P,'r-',theta1,Pm,'b:');

    title('远场 常规与MVDR算法波束形成'); xlabel('x/角度°'); ylabel('y/dB'); legend('常规算法','MVDR算法');

    %----------近场 波束形成--------------

    x0=15; y0=20; % 目标位置x0              % 目标位置y0

    for m=1:M    

    theta2(m,:)=atan(y0/(x0-(m-1)*d));    

    r(m,:)=sqrt(y0^2+((x0-(m-1)*d))^2);   

    SMp(m,:)=A*exp(-j*(w*t/fs+k*r(m,:)))+randn(size(t))/3;    

    SMx(m,:)=A*exp(-j*(w*t/fs+k*r(m,:))).*cos(theta2(m,:))+randn(size(t))/3;    

    SMy(m,:)=A*exp(-j*(w*t/fs+k*r(m,:))).*sin(theta2(m,:))+randn(size(t))/3;

    end

    SM=[SMp.',SMx.',SMy.'];

    RM=cov(SM);

    x=-30:0.5:30;

    y=-30:0.5:30;

    for xx=1:length(x)       

    hwait=waitbar(0,'请等待>>>>>>>>');   

    step=length(x)/100;    

    if length(x)-xx<=5        

    waitbar(xx/length(x),hwait,'即将完成');         

    pause(0.1);       

    else        

    PerStr=fix(xx/step);        

    str=['正在运行中',num2str(PerStr),'%'];        

    waitbar(xx/length(x),hwait,str);        

    pause(0.1);    

    end      

    close(hwait);            

    for yy=1:length(y)        

    for m=1:M          

    theta3=atan(y(yy)/(x(xx)-(m-1)*d));          

    r2=sqrt(y(yy)^2+((x(xx)-(m-1)*d))^2);          

    WMp(m)=exp(-j*k*r2);          

    WMx(m)=exp(-j*k*r2)*cos(theta3);          

    WMy(m)=exp(-j*k*r2)*sin(theta3);        

    end        

    WM=[WMp,WMx,WMy];        

    PP(xx,yy)=WM*RM*WM';        

    PPm(xx,yy)=1/(WM*(RM^-1)*WM');    

    end

    end  

    size(xx) size(yy) size(PP)

    figure

    imagesc(x,y,abs(PP'))  colorbar; colormap gray;

    title('近场 常规算法波束形成') xlabel('x/米'); ylabel('y/米'); axis xy;

    figure

    imagesc(x,y,abs(PPm')) title('近场 MVDR算法波束形成') xlabel('x/米'); ylabel('y/米'); axis xy; colorbar; colormap gray;

    参考:

    https://blog.csdn.net/HJ199404182515/article/details/73882953

  • 相关阅读:
    hdu 1823 Luck and Love 二维线段树
    UVA 12299 RMQ with Shifts 线段树
    HDU 4578 Transformation 线段树
    FZU 2105 Digits Count 线段树
    UVA 1513 Movie collection 树状数组
    UVA 1292 Strategic game 树形DP
    【ACM】hdu_zs2_1003_Problem C_201308031012
    qsort快速排序
    【ACM】nyoj_7_街区最短路径问题_201308051737
    【ACM】nyoj_540_奇怪的排序_201308050951
  • 原文地址:https://www.cnblogs.com/kiki--xiunai/p/10787295.html
Copyright © 2011-2022 走看看