您的当前位置:首页正文

阵列信号处理对角加载算法matlab程序

来源:个人技术集锦
%----------对角加载(LSMI 和 SMI)方向图-----------------------

%总结:这种算法主要给出了一种对角加载值的计算方法,对误差具有一定的稳健性,研究发现

%当数据协方差矩阵中含有信号分量会影响算法的性能。 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)');

因篇幅问题不能全部显示,请点此查看更多更全内容