%方向图合成GSC 自适应阵列处理P44 广义旁瓣相消器很好的解释了最优波束形成器的干扰抑制原理。
clear all; clc;close all;
%%
%信号模型建立 1个信号3个干扰源,不同信噪比。
M = 16; %阵元个数
N = 1024; %快拍数
d_lambda = 1/2; %两个阵元距离与波长的比值
c = 3e8; %光速
tnum = 4; %信号个数
Fs = 1024; %采样频率
sita_s = [10,-35,19,45,3]; % 第一个是信号方向,其他是干扰方向 最后的是期望信号估计方向
SNR=0;
JNR= [40,35,50]; %干扰信号干噪比
Rxx1=zeros(M,M);
Rx0d01=zeros(M-1,1);
degrad = pi/180;
t = (0:(N-1))/Fs;
%%
%构建阻塞矩阵B0 B1
B0=zeros(M-1,M);
us=d_lambda*sin(sita_s(1)*degrad);
uk=us+[1:M-1]/M;
for i=1 : M-1
Ab0(:,i)=[exp(-1i*2*pi*uk(i)*[0:M-1])].';
end
B0=Ab0';
%%
%信号生成
AV=10;%平均次数
for aver=1:AV
S0=sqrt(10^(SNR/10))*exp(j*2*pi*4*t); % 信号 SNR=0dB
I01=sqrt(10^(JNR(1)/10))*exp(j*2*pi*09*t+j*rand(1,N)*2*pi); %干扰信号1 2 3
I02=sqrt(10^(JNR(2)/10))*exp(j*2*pi*12*t+j*rand(1,N)*2*pi);
I03=sqrt(10^(JNR(3)/10))*exp(j*2*pi*12*t+j*rand(1,N)*2*pi);
aq0=[exp(-j*2*pi*d_lambda*sin(sita_s(1)*degrad)*[0:M-1])].';
aq1=[exp(-j*2*pi*d_lambda*sin(sita_s(2)*degrad)*[0:M-1])].';
aq2=[exp(-j*2*pi*d_lambda*sin(sita_s(3)*degrad)*[0:M-1])].';
aq3=[exp(-j*2*pi*d_lambda*sin(sita_s(4)*degrad)*[0:M-1])].';
S=aq0*S0;%信号
I1=aq1*I01;%干扰1
I2=aq2*I02;
I3=aq3*I03;
noise=sqrt(0.5)*(normrnd(0,1,size(S))+j*normrnd(0,1,size(S)));%噪声固定写法功率为单位1
X=S+I1+I2+I3+noise;%干扰噪声之和+期望信号
d0=aq0'*X;
X0=B0*X;
Rx0d0=X0*d0'/N;%是共轭转置 自适应阵列处理P44公式
Rx0d01=Rx0d01+Rx0d0;
Rxx=X*X'/N;
% f2=B0*Rxx*B0';
% f1=X0*X0'/N;
Rxx1=Rxx1+Rxx;
end
Rxx=Rxx1./aver;
Rx0d0=Rx0d01./aver;
Rxx_inv=inv(Rxx);
Rx0=B0*Rxx*B0';
%%
e0=(Rxx_inv*aq0);
e1=(aq0'*Rxx_inv*aq0);%最优波束形成器 MSINR最大信干噪比准则 mvdr
Wopt=e0/e1;
%%
Wx0=inv(Rx0)*Rx0d0;
Wq=aq0; %静态波束形成CBF
Wg=B0'*Wx0;%可以看成干扰特征波束形成器
Wgsc=Wq-Wg; %广义旁瓣GSC
%%
W=Wopt';
figure(1);
clear j;
a=-90:90;
Fsum=0;
for i=1:M
Fsum=Fsum+W(i)*exp(-j*2*pi*d_lambda*(i-1)*sin(a*pi/180));
end
H1=abs(Fsum);
G1=H1./max(H1);
Fal=20*log10(G1);
plot(a,Fal,'k','LineWidth',2);
xlabel('Angle(deg)');
ylabel('Gain(DB)');
axis([-100 100 -90 0]);
grid on;
hold on;
%%
W=Wgsc';
figure(2);
clear j;
a=-90:90;
Fsum=0;
for i=1:M
Fsum=Fsum+W(i)*exp(-j*2*pi*d_lambda*(i-1)*sin(a*pi/180));
end
H1=abs(Fsum);
G1=H1./max(H1);
Fal=20*log10(G1);
plot(a,Fal,'k','LineWidth',2);
xlabel('Angle(deg)');
ylabel('Gain(DB)');
axis([-100 100 -90 0]);
grid on;
hold on;
W=Wq';
figure(3);
clear j;
a=-90:90;
Fsum=0;
for i=1:M
Fsum=Fsum+W(i)*exp(-j*2*pi*d_lambda*(i-1)*sin(a*pi/180));
end
H1=abs(Fsum);
G1=H1./max(H1);
Fal=20*log10(G1);
plot(a,Fal,'r','LineWidth',1);
xlabel('Angle(deg)');
ylabel('Gain(DB)');
axis([-100 100 -90 0]);
grid on;
hold on;
W=Wg';
figure(3);
clear j;
a=-90:90;
Fsum=0;
for i=1:M
Fsum=Fsum+W(i)*exp(-j*2*pi*d_lambda*(i-1)*sin(a*pi/180));
end
H1=abs(Fsum);
G1=H1./max(H1);
Fal=20*log10(G1);
plot(a,Fal,'b','LineWidth',1);
评论2