DOA算法之DBF、CAPON、MUSIC、ROOT-MUSIC、ESPRIT、DML算法对比

本文对比了多种DOA(波达方向)估计算法,包括DBF、CAPON、MUSIC、ROOT-MUSIC、ESPRIT和DML。在不同信噪比和快拍数条件下,评估了它们的精度和性能。DBF在高信噪比下表现较好,但低信噪比时精度下降;CAPON在低信噪比下性能优良,高信噪比时易受噪声影响;MUSIC和ROOT-MUSIC在高信噪比下有良好表现,但低信噪比下精度降低;ESPRIT算法在不同信噪比下保持稳定性能;DML在低信噪比下效果好,高信噪比时可能出现估计误差。快拍数增加能提升多数算法的精度,但也增加了计算复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阵列信号处理算法应用领域涉及雷达、声纳、卫星通信等众多领域,其主要目的就是对天线阵列接收到的信号进行处理,增强有用信号,抑制无用信号,以达到空域滤波的目的,最后提取回波信号中所包含的角度等信息。

DOA估计意思是波达角度估计,是指电磁波到达天线阵列的方向。

 如上图所示,DOA算法的基本思想就是利用天线阵列之间的相位差进行角度的估计。对于远场信号平面波来说,回波到各个天线之间都有一个波程差,其导致了相位差。

DBF数字波束形成,又叫做空域滤波,是阵列信号处理的一个主要方向。其基本思想是通过将各个阵元输出进行加权求和,将天线波束导向在一个方向,对期望来波方向得到最大输出功率。

CAPON算法又叫最大方差无畸变算法。思想是最小化信号功率,又使得来波方向为单位增益的准测自适应波束形成。

MUSIC、ROOT-MUSIC是利用信号子空间和噪声子空间的正交性

ESPRIT是利用信号子空间的旋转不变性

DML是利用最大似然准测,将背景噪声和接收噪声认为成大量独立的噪声源发射的,因而把噪声过程视为一平稳高斯随机白噪声过程,信号波形则假设为确定性信号,但输入波形是待估计的位置参数。而确定性最大似然估计算法中的未知参数是信号参数\theta和噪声方差。这些未知量都是最大化似然估计得到的。

上面这几个算法都是超分辨算法,可以克服瑞丽极限。

本文主要对 DOA算法之DBF、CAPON、MUSIC、ROOT-MUSIC、ESPRIT、DML进行性能的对比。希望通过调研仿真,熟悉各个DOA算法的特点和优缺点,加强自己在不同环境下的算法选择能力

部分主要代码:

%%dbf
a = exp(-1i*2*pi*dd*sind(theta_scan).'*array);
DBFresult1 = 20*log10(abs(signal1(:,1).'*a.')./(max(abs(signal1(:,1).'*a.'))));
%%capon
R1 = inv(signal1*signal1'./snap);   %这里需要是共轭转置
for ii = 1:length(theta_scan)
    aa =  exp(-1i*2*pi*dd*sind(theta_scan(ii)).*array);
    caponresult1(ii) = 1/(abs(aa*R1*aa'));
end
caponresult1 = 20*log10(caponresult1./max(caponresult1));
%%MUSIC
R      =  signal1*signal1'/snap;
[EV,D] =  eig(R);     %特征值分解,D为由INVR的特征值构成的对角矩阵,EV为其特征向量构成的矩阵 
EVA    =  diag(D)';   %抽取D的对角线元素并转置
[EVA,I] = sort(EVA);  %从小到大排序,I对应EVA中元素在原来EVA中的位置。
EVA    = fliplr(EVA); %对特征值再从大到小排列
EV     = fliplr(EV(:,I));  %对特征值对应的特征向量进行对应的从大到小的排序
EN     = EV(:,numstarget+1:arraylen);   %把噪声子空间拿出来
for ii = 1:length(theta_scan)
    aa = exp(1j*2*pi*dd*sind(theta_scan(ii))*array).';
    MUSICresult(ii) = (aa'*aa)/(aa'*EN*EN'*aa);    
end
MUSICresult = 20*log10(abs(MUSICresult)./(max(abs(MUSICresult))));
%%root-MUSIC
Unx=EN;               
syms z;
pz=z.^([0:arraylen-1]');
pz1=(z^(-1)).^([0:arraylen-1]);
fz=z.^(arraylen-1)*pz1*Unx*Unx'*pz;         % 构造多项式
a=sym2poly(fz);                         % 符号多项式->数值多项式
zx=roots(a);                            % 求根
rx=zx';
[as,ad]=(sort(abs((abs(rx)-1))));
DOAest=asin(sort(angle(rx(ad([1,3])))/pi))*180/pi;
%ESPRIT
[EV2,D2]  = eig(R);            
EVA2      = real(diag(D2)');   
[EVA2,I2] = sort(EVA2);        
EVA2      = fliplr(EVA2);      
EV2       = fliplr(EV2(:,I2)); 
Exy   = [EV2(1:arraylen-1,1:numstarget)  EV2(2:arraylen,1:numstarget)]; 
E_xys = Exy'*Exy./(size(Exy'*Exy,1));   
[EV3,D3] = eig(E_xys);
EVA_xys  = real(diag(D3)');
[EVA_xys,I3] = sort(EVA_xys);
EVA_xys      = fliplr(EVA_xys);
EV_xys       = fliplr(EV3(:,I3));
Gx  = EV_xys(1:numstarget,numstarget+1:numstarget*2);
Gy  = EV_xys(numstarget+1:numstarget*2,numstarget+1:numstarget*2);
Psi = -Gx/Gy;
%%DML
R  =  signal1*signal1'/snap;
target_serched = zeros(1,numstarget);
max_trace = intmin;
aa = zeros(length(array),numstarget);
theta_scan1    = linspace(sind(-90),sind(90),1024);
for ii = 1:length(theta_scan1)
    aa(:,1) = exp(1i*2*pi*dd*array.'*theta_scan1(ii));
    for jj = ii+1:length(theta_scan1)                          
        aa(:,2) = exp(1i*2*pi*dd*array.'*theta_scan1(jj));
        Pa = aa*(inv(aa'*aa))*aa';  
        Y = Pa*R;  
        tmp = abs(trace(Y));
        if tmp > max_trace
            target_serched(1) = theta_scan1(ii);    
            target_serched(2) = theta_scan1(jj);
            max_trace = tmp;
        end
    end
end

首先是各个算法谱峰的对比:

仿真条件:16个天线阵列,快拍数为50,信噪比为20,角度设定为(-10°,10°)

结论:dbf算法精度最低,其次是capon,其余超分辨算法测角精度上差不多。

然后是各个算法测量角度、RMSE随信噪比变化的趋势对比:

结论:

  • DBF算法:在高信噪比下,DBF算法的性能表现较好,但在低信噪比下,其分辨率和定位精度会下降。
  • CAPON算法:CAPON算法在低信噪比下的性能表现较好,但在高信噪比下,其抗干扰能力较弱,容易受到噪声的影响。
  • MUSIC算法:MUSIC算法在高信噪比下的性能表现较好,但在低信噪比下,其分辨率和定位精度会下降。
  • ROOT-MUSIC算法:ROOT-MUSIC算法在高信噪比下的性能表现较好,但在低信噪比下,其分辨率和定位精度也会下降。
  • ESPRIT算法:ESPRIT算法的性能表现与信噪比关系不大,在不同信噪比下都能保持较好的分辨率和定位精度。
  • DML算法:DML算法在低信噪比下的性能表现较好,但在高信噪比下容易产生估计误差。

最后是各个算法测量角度、RMSE随快拍数变化的趋势对比:

结论:

  • DBF算法:随着快拍数的增加,DBF算法的分辨率和定位精度会提高,但计算复杂度也会增加。
  • CAPON算法:CAPON算法的性能随着快拍数的增加而提高,但在快拍数过多时,容易出现过拟合现象。
  • MUSIC算法:MUSIC算法的分辨率和定位精度随着快拍数的增加而提高,但计算复杂度也会增加。
  • ROOT-MUSIC算法:ROOT-MUSIC算法的性能表现与MUSIC算法类似,随着快拍数的增加,其分辨率和定位精度也会提高。
  • ESPRIT算法:ESPRIT算法对快拍数的要求较低,通常只需要较少的快拍数就可以保持较好的性能表现。
  • DML算法:DML算法对快拍数的要求较低,但过多的快拍数会导致计算复杂度增加。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值