% CBF、MVM和MEM三种算法比较
clear;
close all
%----阵列参数-------------
M=10;
N=2;
snr=10;
L=10;
ddd=0.5;
signal_doa=[10 15];
%----产生数据-------------
signal_a=10^(snr/10);
S=randn(N,L)+i*randn(N,L);
noise=randn(M,L)+i*randn(M,L);
A=exp(i*2*pi*ddd*(0:M-1)'*sin(signal_doa*pi/180));
X=A*S*signal_a+noise;
%----应用算法并搜索-------------
R=X*X'/L;
ddoa=-90:0.1:90;
steer=exp(i*2*pi*ddd*(0:M-1)'*sin(ddoa*pi/180));
u0=[1; zeros(M-1,1)];
W=inv(R(2:end,2:end))*R(2:end,1);W=[1;-W];
W1=inv(R(1:end-1,1:end-1))*R(1:end-1,end);W1=[-W1;1];
for ij=1:length(ddoa)
aa=steer(:,ij);
p1(ij)=aa'*R*aa; %-CBF算法
p2(ij)=1/(aa'*inv(R)*aa); %-MVM算法
p3(ij)=1/(aa'*inv(R)*u0*u0'*(inv(R))'*aa); %-MEM算法
p4(ij)=1/(aa'*W*W'*aa);
p5(ij)=1/(aa'*W1*W1'*aa);
end
%----画图得到角度-------------
figure;hold on;
plot(ddoa,20*log10(abs(p1)));
plot(ddoa,20*log10(abs(p2)),'r');
plot(ddoa,20*log10(abs(p3)),'k');
plot(ddoa,20*log10(abs(p4)),'g');
plot(ddoa,20*log10(abs(p5)),'c');
box on;axis tight;grid on;
legend('CBF','MVM','MEM','BLP','FLP')
评论0