%总结:这种算法主要给出了一种对角加载值的计算方法,对误差具有一定的稳健性,研究发现
%当数据协方差矩阵中含有信号分量会影响算法的性能。 clear all;clear all;clc;
ratio_d_and_w=0.5;
N_array=20;%阵列数 N_signal=60;% 样本数
ang1=0*pi/180;%所需信号的方向 SNR=5;%信噪比
ASd=sqrt(10.^(SNR/10));
ang2=40*pi/180;%干扰信号的方向 INR=45;%干噪比
ASi=sqrt(10.^(INR/10));
Sd=ASd*(randn(1,N_signal)+i*randn(1,N_signal));%Sd为所需信号 Si=ASi*(randn(1,N_signal)+i*randn(1,N_signal));%Si为干扰信号
Ni=randn(N_array,N_signal)+i*randn(N_array,N_signal);%Ni内噪声
Desired_Array=zeros(N_array,N_signal);
Interferential_Array=zeros(N_array,N_signal);
for LL=1:N_signal
Interferential_Array(:,LL)=Si(LL)*test(ang2,N_array,ratio_d_and_w).'; Desired_Array(:,LL)=Sd(LL)*test(ang1,N_array,ratio_d_and_w).'; end
X=zeros(N_array,N_signal);
X= Interferential_Array +Ni;
Rx=X*X'/N_signal;
mm=std(diag(Rx));%对角加载值的确定下限
%mm=trace(Rx)/N_array;%对角加载值的确定上限 R1=Rx+mm*eye(size(Rx)); R=inv(R1);
A_est=test(ang1,N_array,ratio_d_and_w); C= A_est;
w_SMI=R*C/(C'*R*C);%对角加载
w_LSMI=inv(Rx)*C/(C'*inv(Rx)*C);%普通的Capon算法
x_axis=-90:0.5:90; ang=(x_axis)*pi/180; for j=1:length(ang)
steer=test(ang(j),N_array,ratio_d_and_w); f1(j)=w_SMI'*steer; f2(j)=w_LSMI'*steer; end
f1=10*log10(abs(f1)/(max(max(abs(f1))))); f2=10*log10(abs(f2)/(max(max(abs(f2))))); subplot(2,1,1);
plot(x_axis,f1),grid on;hold on; plot(x_axis,f2,'--'),grid on; xlabel('theta/°'); ylabel('F/dB'); title('(a)');
%********************************************** X=Desired_Array +Interferential_Array +Ni;
Rx=X*X'/N_signal;
mm=std(diag(Rx));%对角加载值的确定下限
%mm=trace(Rx)/N_array;%对角加载值的确定上限 R1=Rx+mm*eye(size(Rx)); R=inv(R1);
A_est=test(ang1,N_array,ratio_d_and_w); C= A_est;
w_SMI=R*C/(C'*R*C);%对角加载
w_LSMI=inv(Rx)*C/(C'*inv(Rx)*C);%普通的Capon算法 x_axis=-90:0.5:90; ang=(x_axis)*pi/180; for j=1:length(ang)
steer=test(ang(j),N_array,ratio_d_and_w); f1(j)=w_SMI'*steer; f2(j)=w_LSMI'*steer; end
f1=10*log10(abs(f1)/(max(max(abs(f1))))); f2=10*log10(abs(f2)/(max(max(abs(f2))))); subplot(2,1,2);
plot(x_axis,f1),grid on;hold on; plot(x_axis,f2,'--'),grid on; xlabel('theta/°'); ylabel('F/dB'); title('(b)');
因篇幅问题不能全部显示,请点此查看更多更全内容