分享

开源代码 | MATLAB线性阵列仿真

 调皮连续波 2023-01-01 发布于贵州

本文首发于公众号【调皮连续波】,其他平台为自动同步,同步内容若有不全或乱码,请前往公众号阅读。保持关注调皮哥,获得更多雷达干货学习资料和建议,助力大家轻松、快乐、有方向地学习雷达技术。

1、16阵元均匀线阵方向图

%8阵元均匀线阵方向图,来波方向为0度clc;clear all;close all;
element_num=16;%阵元数为16d_lamda=1/2;%阵元间距d与波长lamda的关系theta=linspace(-pi/2,pi/2,200);theta0=[0.2 0.1];%来波方向
w=exp(1i*2*pi*d_lamda*sin(theta0).*[0:element_num-1]'); %导向矢量p =zeros(2,length(theta),1);for j=1:length(theta) a=exp(1i*2*pi*d_lamda*sin(theta(j)).*[0:element_num-1]'); p(:,j)=w'*a;end
figure(1);plot(theta,abs(sum(p,1)));grid on xlabel('theta/radian')ylabel('amplitude')title('16阵元均匀线阵方向图')
figure(2);dbabs = db(abs(sum(p,1))/max(abs(sum(p,1))));plot(theta,dbabs),grid onxlabel('theta/radian')ylabel('amplitude')title('16阵元均匀线阵方向图')

随着阵元数的增加,波束宽度变窄,分辨力提高,仿真图如下:

2、波束宽度与波达方向及阵元数的关系

在固定阵元数条件下,波束宽度随着角度的增大而增大,该现象满足角度分辨率随着角度增大而降低的理论推导。

clcclear all close all
ima=sqrt(-1);element_num1=16; %阵元数element_num2=128; element_num3=1024; lamda=0.03; %波长为0.03d=1/2*lamda; %阵元间距与波长的关系theta=0:0.5:90;
for j=1:length(theta); fai(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num1*d)); psi(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num2*d)); beta(j)=theta(j)*pi/180-asin(sin(theta(j)*pi/180)-lamda/(element_num3*d));endfigure;plot(theta,fai,'r',theta,psi,'b',theta,beta,'g'),grid onxlabel('theta');ylabel('Width in radians')title('波束宽度与波达方向及阵元数的关系')legend([num2str(element_num1),'阵元'],[num2str(element_num2),'阵元'],[num2str(element_num3),'阵元'])

3、栅瓣

当阵元间距 d>λ/2时,会出现栅瓣,导致空间模糊。

%8阵元均匀线阵方向图,来波方向为0度clc;clear all;close all;imag=sqrt(-1);element_num=8;%阵元数为8d_lamda=1;%阵元间距d与波长lamda的关系theta=linspace(-pi/2,pi/2,200);theta0=0;%来波方向w=exp(imag*2*pi*d_lamda*sin(theta0)*[0:element_num-1]');for  j=1:length(theta)    a=exp(imag*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]');   p(j)=w'*a;endfigure;plot(theta,db(abs(p))/max(abs(p))),grid onxlabel('theta/radian')ylabel('amplitude')title('8阵元均匀线阵方向图')

仿真图如下:

4、天线方向图

类似于时域滤波(空域滤波),天线方向图是最优权的傅立叶变换。仿真程序和仿真图如下:

clcclear all close allima=sqrt(-1);element_num=32;      %阵元数source_num=1;       %信源数d_lamda=1/2;        %阵元间距与波长的关系theta=linspace(-pi/2,pi/2,200);theta0=0;        %来波方向
w=exp(ima*2*pi*d_lamda*sin(theta0)*[0:element_num-1]');for j=1:length(theta); a=exp(ima*2*pi*d_lamda*sin(theta(j))*[0:element_num-1]'); p(j)=w'*a;end
figure;subplot(1,2,1)plot(theta,abs(p)),grid onxlabel('theta/radian')ylabel('amplitude')title('按定义的方向图')
pfft=fftshift(fft(w,128));subplot(1,2,2)plot(linspace(-pi/2,pi/2,128),abs(pfft)),grid onxlabel('theta/radian')ylabel('FFT_amplitude')title('最优权的傅里叶变换')

5、最大信噪比准则方向图和功率谱

clc;clear all;close all;ima=sqrt(-1);element_num=8;      %阵元数为8d_lamda=1/2;        %间距为半波长theta=-90:0.5:90;   %范围theta0=0;           %来波方向theta1=20;          %干扰方向L=512;             %采样单元数
for i=1:L amp0=10*randn(1); amp1=200*randn(1); ampn=1; s(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]'); j(:,i)=amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]'); n(:,i)=ampn*(randn(element_num,1)+ima*randn(element_num,1));endRs=1/L*s*s'; %信号自相关矩阵Rnj=1/L*(j*j'+n*n'); %干扰+噪声的自相关矩阵[V,D]=eig(Rs,Rnj); %(Rs,Rnj)的广义特征值和特征向量[D,I]=sort(diag(D)); %排序
Wopt=V(:,I(8)); %最优权矢量
for j=1:length(theta) a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]'); f(j)=Wopt'*a; p(j)=a'*Rs*a+a'*Rnj*a;end
F=20*log10(abs(f)/max(max(abs(f))));P=20*log10(abs(p)/max(max(abs(p))));
subplot(121)plot(theta,F);grid on;hold onplot(theta0,-50:0,'.');plot(theta1,-50:0,'.')xlabel('theta/0');ylabel('F in dB');title('max-SNR 方向图');axis([-90 90 -50 0]);hold on
subplot(122)plot(theta,P,'r');grid onxlabel('theta/0');ylabel('功率 in dB');title('max-SNR功率谱')

仿真图如下:

6、ASC旁瓣相消(MSE准则)

clc;close all;clear allima=sqrt(-1);M=32;                %辅助天线的数目d_lamda=.5;theta0=-30;            %来波方向theta1=60;            %干扰方向  L=512;              %采样单元数s=zeros(1,512);        %预划分一个区域for ii=1:L;    amp0=1*randn(1);  %信号的幅度随机产生,保证信号之间是不相关的    amp1=200*randn(1);    ampn=1;    jam(:,ii)=amp1*exp(ima*2*pi*0.5*sin(theta1*pi/180)*[0:M-1]')+ampn*(randn(M,1)+ima*randn(M,1));      %干扰+噪声    s(ii)=amp0*exp(ima*2*pi*0.5*sin(theta0*pi/180))+amp1*exp(ima*2*pi*0.5*sin(theta1*pi/180))+ampn*(randn(1,1)+ima*randn(1,1));%接收信号(信号+干扰+噪声)    s0(ii)=amp0*exp(ima*2*pi*0.5*sin(theta0*pi/180));endRx=1/L*jam*jam';       %噪声自相关矩阵,相当于X(t)r_xd=1/L*jam*s';Wopt=pinv(Rx)*r_xd;delta=s0-(s-Wopt'*jam);delta1=abs(mean(delta.^2)-(mean(delta)).^2)   %方差theta=linspace(-pi/2,pi/2,200);
for jj=1:length(theta) a=exp(ima*2*pi*.5*sin(theta(jj))*[0:M-1]'); f(jj)=Wopt'*a;end
F=20*log10(abs(f)/(max(max(abs(f)))));figure(1)plot(theta*180/pi,F),grid on,hold onplot(theta0,-50:0,'.')plot(theta1,-50:0,'.')xlabel('theta/o');ylabel('F/dB');title('MSE准则下的方向图')axis([-90 90 -50 0]);%可为x轴和y轴设置一个极限范围

仿真图如下:

7、线性约束最小方差(LCMV)准则

clc;clear all ;close all;ima=sqrt(-1);element_num=8;       %阵元数d_lamda=1/2;         %阵元间距与波长的关系theta=-90:0.5:90-0.3;    %搜索范围theta0=0;            %三个信号源的来波方向theta1=30;           theta2=60;L=512;              %采样单元数
for i=1:L; amp0=10*randn(1); amp1=100*randn(1); amp2=10*randn(1); ampn=10; x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+... amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+... amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+... ampn*(randn(element_num,1)+ima*randn(element_num,1));end
Rx=1/L*x* x';steer1=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')steer2=exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')steer3=exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')C=[steer1 steer2 steer3];F=[1 0 1]'; %把三个方向都作为来波方向w=inv(Rx)*C*(inv(C'*inv(Rx)*C))*F;
for j=1:length(theta); a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]'); f(j)=w'*a; p(j)=1/(a'*inv(Rx)*a);end
f=10*log10(abs(f)/(max(max(abs(f)))));figure(1)subplot(121)plot(theta,f),grid on,hold onplot(theta0,-20:0,'.')plot(theta1,-20:0,'.')plot(theta2,-20:0,'.')xlabel('theta/o');ylabel('F/dB');title('Capon beamforming方向图')
axis([-90 90 -20 0]);%可为x轴和y轴设置一个极限范围P=10*log10(abs(p)/(max(max(abs(p)))));
subplot(122)plot(theta,P),grid on,hold onplot(theta0,-20:0,'.')plot(theta1,-20:0,'.')plot(theta2,-20:0,'.')xlabel('theta/o');ylabel('功率/dB');title('Capon beamforming功率谱')

仿真图如下:

8、Capon beamforming

clc;clear all ;close all;ima=sqrt(-1);element_num=8;       %阵元数d_lamda=1/2;         %阵元间距与波长的关系theta=-90:0.5:90;      %范围theta0=0;            %来波方向theta1=20;           %干扰方向theta2=60;           %干扰方向L=1000;              %采样单元数for i=1:L;    amp0=10*randn(1);%信号的幅度随机产生,保证信号之间是不相关的    amp1=200*randn(1);    amp2=200*randn(1);    ampn=3;    x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+...      amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+...      amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+...      ampn*(randn(element_num,1)+ima*randn(element_num,1));endRx=1/L*x* x';R=inv(Rx);steer=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]');w=R*steer/(steer'*R*steer);%Capon最优权矢量for j=1:length(theta);    a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]');    f(j)=w'*a;    p(j)=1/(a'*R*a);endF=20*log10(abs(f)/(max(max(abs(f)))));P=20*log10(abs(p)/(max(max(abs(p)))));%此处是功率的对数形式figure;subplot(121)plot(theta,F),grid on,hold onplot(theta0,-50:0,'.')plot(theta1,-50:0,'.')plot(theta2,-50:0,'.')xlabel('theta/o');ylabel('F/dB');title('Capon beamforming方向图')axis([-90 90 -50 0]);subplot(122)plot(theta,P),grid onxlabel('theta/o');ylabel('功率/dB');title('Capon beamforming功率谱')

仿真图如下:

9、不同方法估计协方差矩阵的Capon波束形成

clc;clear all;close all;ima=sqrt(-1);element_num=8;       %阵元数为8d_lamda=1/2;         %间距为半波长theta=-90:0.5:90;       %范围theta0=0;             %来波方向theta1=50;            %干扰方向L=512;%采样单元数for i=1:L    amp0=10*randn(1);    amp1=50*randn(1);    ampn=0.5;    s(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]');    j(:,i)=amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]');    n(:,i)=ampn*exp(ima*2*pi*randn(1)*[0:element_num-1]');endRx=1/L*(s+j+n)*(s+j+n)';%接收信号自相关矩阵Rnj=1/L*(j+n)*(j+n)';%干拢+噪声的自相关矩阵e=exp(ima*2*pi*d_lamda*sin(theta0*pi/180)*[0:element_num-1]');%来波方向信号Wopt_Rx=inv(Rx)*e/(e'*inv(Rx)*e);%采用接收信号的权矢量Wopt_Rnj=inv(Rnj)*e/(e'*inv(Rnj)*e);%采用干拢+噪声信号的权矢量for j=1:length(theta)    a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]');    f1(j)=Wopt_Rx'*a;    f2(j)=Wopt_Rnj'*a;endF1=20*log10(abs(f1)/max(max(abs(f1))));F2=20*log10(abs(f2)/max(max(abs(f2))));figure;plot(theta,F1,theta,F2,'r'),grid on;hold onplot(theta0,-50:0,'.');hold onplot(theta1,-50:0,'.')xlabel('theta/0');ylabel('F(1,2)/dB');title('不同方法估计协方差矩阵的Capon波束形成');axis([-90 90 -50 0]);legend('接收信号的权矢量','干拢+噪声信号的权矢')

仿真图如下:

10、多点约束的Capon波束形成和方向图

clc;clear all ;close all;ima=sqrt(-1);element_num=8;     %阵元数d_lamda=1/2;        %阵元间距与波长的关系theta=-90:0.3:90;    %搜索范围theta0=0;           %来波方向theta1=20;          %干扰方向theta2=50;         %干扰方向L=512;              %采样单元数Rx=zeros(element_num,element_num);%产生协方差矩阵for i=1:L;    amp0=10*randn(1);    amp1=10*randn(1);    amp2=50*randn(1);    namp=0.5*randn(1);%噪声的幅度随机产生,保证噪声与信号之间是不相关的    J(:,i)=amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+...     amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+...       namp*exp(ima*2*pi*randn(1)*[0:element_num-1]');    x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+...      J(:,i);%表示接收信号endRx=Rx+1/L*x*x';R=inv(Rx);w=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+...amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+...amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]');for j=1:length(theta);    a=exp(ima*2*pi*d_lamda*sin(theta(j)*pi/180)*[0:element_num-1]');    f(j)=w'*a;    p(j)=1/(a'*R*a);endF=10*log10(abs(f)/max(max(f)));%取对数的方向图P=10*log10(abs(p)/max(max(p)));%取对数的功率谱估计figure;subplot(121)plot(theta,F),grid on,hold onplot(theta0,-50:0,'.');plot(theta1,-50:0,'.');plot(theta2,-50:0,'.');xlabel('theta/o');ylabel('F/dB');title('capon beamforming方向图')subplot(122)plot(theta,P),grid on,hold onplot(theta0,-50:0,'.');plot(theta1,-50:0,'.');plot(theta2,-50:0,'.');xlabel('theta/o');ylabel('P/dB');title('capon beamforming功率谱')

仿真图如下:

11、自适应波束形成方向图

%自适应波束形成方向图clc;clear all; close all;ima=sqrt(-1);element_num=8;       %阵元数c=3e8;f=500e6;lamda=c/f;d=1/2*lamda;         %阵元间距与波长的关系theta=-90:0.5:90;      %范围theta0=0;            %来波方向theta1=45;           %干扰方向theta2=60;           %干扰方向L=512;              %采样单元数for i=1:L;    amp0=10*randn(1);%信号的幅度随机产生,保证信号之间是不相关的    amp1=100*randn(1);    amp2=100*randn(1);    ampn=10;    x(:,i)=amp0*exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')+...      amp1*exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')+...      amp2*exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')+...      ampn*(randn(element_num,1)+ima*randn(element_num,1));%产生阵列信号endRx=1/L*x* x';steer1=exp(ima*2*pi*1/2*sin(theta0*pi/180)*[0:element_num-1]')steer2=exp(ima*2*pi*1/2*sin(theta1*pi/180)*[0:element_num-1]')steer3=exp(ima*2*pi*1/2*sin(theta2*pi/180)*[0:element_num-1]')C=[steer1 steer2 steer3];F=[1 0 0]';%把0度方向作为来波方向w=inv(Rx)*C*(inv(C'*inv(Rx)*C))*F;for j=1:length(theta);    a=exp(ima*2*pi*1/2*sin(theta(j)*pi/180)*[0:element_num-1]');    f(j)=w'*a;    p(j)=1/(a'*inv(Rx)*a);endF=20*log10(abs(f)/(max(max(abs(f)))));P=20*log10(abs(p)/(max(max(abs(p)))));%此处是功率的对数形式figuresubplot(121)plot(theta,P),grid on,hold onxlabel('theta/o');ylabel('F/dB');title('阵列信号方向图')axis([-90 90 -50 0]);subplot(122)plot(theta,F),grid on,hold on;plot(theta0,-50:0,'.')plot(theta1,-50:0,'.')plot(theta2,-50:0,'.')xlabel('theta/o');ylabel('功率/dB');axis([-90 90 -50 0]);title('自适应波束形成方向图')

当采样数L=2048时仿真图如下:

当采样数L=2048时仿真图如下:

L=512,幅度为

amp0=10*randn(1); 

amp1=200*randn(1);

amp2=200*randn(1);

ampn=10;时仿真图如下:

L=512,幅度为

amp0=100*randn(1); 

amp1=200*randn(1);

amp2=200*randn(1);

ampn=10;时仿真图如下:

L=512,幅度为

amp0=100*randn(1); 

amp1=10*randn(1);

amp2=10*randn(1);

ampn=10;时仿真图如下:

L=2048,幅度为

amp0=10*randn(1); 

amp1=50*randn(1);

amp2=50*randn(1);

ampn=10;时仿真图如下:

L=2048,幅度

amp0=10*randn(1);

amp1=500*randn(1);

amp2=500*randn(1);

ampn=10;时仿真图如下:

【本期结束】


喜欢本文,可以转发朋友圈~,关注【调皮连续波】,和1万+人一起学雷达!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多