欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

雷达信号处理:利用Matlab实现一维和二维自适应波束形成(DBF)

最编程 2024-08-14 14:09:00
...
clc;clear all;close all;
%%%%%%%%%%%%%%%%%一维DBF%%%%%%%%%%%%%%%%%
K=8;%阵元个数
wavelength=0.1;%波长
d=wavelength/2;%阵元间距
theta0=(-60:60)*pi/180;%波达方向
NFFT=K;%FFT点数
W=chebwin(K,40);%切比雪夫窗
St=zeros(K,length(theta0));
delta_phase=pi/K;
S=exp(j*2*pi*(0:K-1)'*(d*sin(theta0)/wavelength-delta_phase/pi/2));%阵列空域导向矢量
for ii=1:length(theta0)
St(:,ii)=W.*S(:,ii);
end
B=fftshift(fft(St,NFFT,1),1);
figure
for jj=1:K
Bn=abs(B(jj,:))/max(abs(B(jj,:)));
plot(theta0*180/pi,20*log10(Bn),'LineWidth',2);hold on;
end
xlabel('方位/度');ylabel('幅度/dB');
title('数字波束形成');axis([min(theta0)*180/pi,max(theta0)*180/pi,-50 0]);
%%%%%%%%%%%%%%%%二维DBF%%%%%%%%%%%%%%%%%
M=8;%阵元行数
N=4;%阵元列数
wavelength=0.1;%波长
d=wavelength/2;%阵元间距
theta=(-90:90)*pi/180;%波达方向
fai=(-90:90)*pi/180;%波达方向
NFFT1=M;%FFT点数
NFFT2=N;%FFT点数
W1=chebwin(M,30);%切比雪夫窗
W2=chebwin(N,30);%切比雪夫窗
W=W1*W2.';
[theta0,fai0]=meshgrid(theta,fai);
B=zeros(length(theta),length(fai));
figure
for xx=1:M
for yy=1:N
for ii=1:length(theta)
for jj=1:length(fai)
S=exp(j*2*pi*(0:M-1)'*d*sin(theta(ii))/wavelength)*exp(j*2*pi*(0:N-1)*d*sin(fai(jj))/wavelength);
St=S.*W;
% B1=fftshift(fft(St,NFFT1,1),1);
% B2=fftshift(fft(B1,NFFT2,2),2);
Btemp=fftshift(fft2(St,M,N));
B(ii,jj)=Btemp(xx,yy);
end
end
B=20*log10(abs(B)/max(max(abs(B))));
for ii=1:length(theta)
for jj=1:length(fai)
if B(ii,jj)<-40
B(ii,jj)=-40;
end
end
end
mesh(theta0*180/pi,fai0*180/pi,B); %mesh绘图
hold on;
end
end
xlabel('方位角/度');ylabel('俯仰角/度');zlabel('幅度/dB');
title('数字波束形成');axis([min(theta)*180/pi max(theta)*180/pi min(fai)*180/pi max(fai)*180/pi -40 0]);