【雷达通信】《现代雷达系统分析与设计》大作业matlab源码

一、简介

案例1 某弹载雷达系统要求:不模糊探测距离80km;工作比不超过20%;波长=3cm;天线等效孔径D=0.25m(直径);噪声系数F=3dB;系统损耗L=4dB;天线波束宽度θ3dB =6°;目标的RCS:=1500 m2。弹目之间的相对运动关系如图。目标航速Vs=10~30m/s(任取一值),导弹运动速度Va=600m/s,目标航向与弹轴方向之间的夹角为α′=30°,目标偏离弹轴方向的角度为β=1°,则在舰船位置P,导弹对目标视线与目标航向的夹角α=α′+β。从t=0时刻开始,导弹从O向O’位置运动, 目标从P向P’位置运动。
案例2 针对某阵列雷达的实测数据,给出如下处理结果:
数据文件:radar_data.mat,为三维数组3000 × 20 × 12,3000为距离单元,20为天线单元数(天线间隔0.625m),12为一个波位的脉冲数。其它参数上课给出。
对数据依次进行DBF、脉压、MTI、CFAR等处理。
1.给出波束指向为0°时的DBF处理结果,要求副瓣<-25dB。
2.给出脉压后的原始视频,要求副瓣<-35dB。(LFM信号: B=800KHz,Te=420us)
3.设计四/六脉冲MTI滤波器,给出MTI后的原始视频,选择2个目标估算对杂波的改善因子。估计杂波的谱中心和谱宽。(雷达为三变T:4100:4400:4700 us)

二、源代码

% 参数定义
clc;clear all;close all;
FFTsize=4096;%FFT点数
d=0.65;%天线间隔0.65m
C=3e8;%光速
lamda=0.03;%波长
TimeWidth=160e-6;%脉冲宽度
BandWidth=1e6;%调频带宽
K=BandWidth/TimeWidth;%调频斜率
D=0.25;%天线孔径
Ae=0.25*pi*D^2;%天线有效面积
G=4*pi*Ae/lamda^2;%天线增益
RCS=1500;%目标RCS
k=1.38e-23;%玻尔兹曼常数
T=290;%标准噪声温度
F=3;%噪声系数(dB)
L=4;%系统损耗(dB)
Lp=5;%信号处理损失(dB)
N_CI=64;%相干脉冲积累数
Pt_CI=30;%64脉冲相干积累时发射功率
Ru=80000;%不模糊探测距离(m)
theta_3dB=6;%天线波束宽度(角度)
PRT=800e-6;%搜索状态脉冲重复周期
Fs=2e6;%采样频率
Ts=1/Fs;%采样周期
Va=600;%导弹速度
Vs=20;%目标航速
alpha=30;%目标航向与弹轴方向夹角(角度)
beta=1;%目标偏离弹轴方向夹角(角度)
Rs=20000;%第七题中目标距离
nTr=fix(PRT*Fs);%每个脉冲重复周期采样点
nTe=fix(TimeWidth*Fs);%匹配滤波点数
nTe=nTe+mod(nTe,2);
P_fa=10e-6;%虚警概率

% (1)模糊函数和-4dB等高线图
eps=1e-10;%防止奇异点出现
tau=-TimeWidth:TimeWidth/1600:TimeWidth-TimeWidth/1600;
fd=-BandWidth:BandWidth/1000:BandWidth-BandWidth/1000;
[X,Y]=meshgrid(tau,fd);
temp1=1-abs(X)./TimeWidth;
temp2=pi*TimeWidth*(K*X+Y).*temp1+eps;
ambg=abs(temp1.*sin(temp2)./temp2);%模糊函数模值
figure;mesh(tau*1e6,fd*1e-6,ambg);%模糊函数图
xlabel('\tau/us');ylabel('fd/MHz');title('模糊函数图');grid on;
[m1,m2]=find(ambg==max(max(ambg)));%找到原点
figure;plot(tau*1e6,20*log10(abs(ambg(m1,:))));%画出距离模糊函数图
xlabel('\tau/us');ylabel('|X(\tau,0)|');title('|X(\tau,0)|距离模糊图');grid on;axis([-100,100,-60,0]);
figure;plot((fd)*1e-6,20*log10(abs(ambg(:,m2))));%画出速度模糊函数图
xlabel('fd/MHz');ylabel('|X(0,fd)|');title('|X(0,fd)|速度模糊图');grid on;axis([-1,1,-60,0]);
figure;contour(tau*1e6,fd*1e-6,ambg,'bl');%画出模糊函数的等高线图
xlabel('\tau/us');ylabel('fd/MHz');title('模糊函数的等高线图');axis([-150,150,-1,1]);
figure;contour(tau*1e6,fd*1e-6,ambg,[10^(-4/20),10^(-4/20)],'bl');%画出-4dB等高线图
xlabel('\tau/us');ylabel('fd/MHz');title('模糊函数的-4dB切割等高线图局部放大');axis([-2,2,-0.01,0.01]);


[I2,J2]=find(abs(20*log10(ambg)-(-3))<0.1);%计算-3dB时宽带宽
tau_3db=abs(tau(J2(end))-tau(J2(1)))*1e6
B_3db=abs(fd(I2(end))-fd(I2(1)))*1e-6

% (2)(3)略

% (4)相干积累提升SNR
N_pulse=theta_3dB/60/PRT
R_max=100000;%测试最大距离100km
R_CI=linspace(0+R_max/400,R_max,400);
SNR_1=10*log10(Pt_CI*TimeWidth*G^2*RCS*lamda^2)-10*log10((4*pi)^3*k*T.*(R_CI).^4)-F-L-Lp;
SNR_N=SNR_1+10*log10(N_CI);
figure;plot(R_CI*1e-3,SNR_1,'b-.',R_CI*1e-3,SNR_N,'r-');title('相干积累前后信噪比-距离关系曲线');
xlabel('R/km');ylabel('SNR/dB');legend('相干积累前','相干积累后');grid on;axis([30,100,-10,40]);

%%% (5)脉压
t=(-nTe/2:(nTe/2-1))/nTe*TimeWidth;
f=(-256:255)/512*(2*BandWidth);
Slfm=exp(1j*pi*K*t.*t);%线性调频信号
% figure;plot(t*1e6,real(Slfm),'r-',t*1e6,imag(Slfm),'b-.');title('线性调频信号');
Ht=conj(fliplr(Slfm));%时域匹配滤波函数
Hf=fftshift(fft(Ht,512));
figure;plot(t*1e6,real(Ht),'r-',t*1e6,imag(Ht),'b-.');title('线性调频信号匹配滤波函数h(t)');
xlabel('时延/us');ylabel('幅度');legend('实部','虚部');grid on;
figure;plot(f*1e-6,abs(Hf));title('线性调频信号匹配滤波器H(f)');
xlabel('频率/MHz');ylabel('幅度');grid on;
Echo=zeros(1,fix(PRT*Fs));DelayNumber=fix(2*Ru/C*Fs);%目标距离80km
Echo(1,(DelayNumber+1):(DelayNumber+length(Slfm)))=Slfm;%产生回波信号
% figure;plot((0:1/Fs:PRT-1/Fs)*C/2*1e6,real(Echo),'r-',(0:1/Fs:PRT-1/Fs)*C/2*1e6,imag(Echo),'b-.');
% title('回波信号');xlabel('距离/Km');ylabel('幅度');legend('实部','虚部');grid on;
Echo_fft=fft(Echo,2048);%要在频域脉压
Echo_s=repmat(Echo_fft,2,1).';%因为fft按列计算,因此数据按列放置
Ht_s=repmat(Ht,2,1).';%因为fft按列计算,因此数据按列放置
window=[ones(nTe,1),taylorwin(nTe,5,-35)];%窗函数,泰勒窗-35dB
Hf_s=fft(Ht_s.*window,2048);%脉压和加窗的频域
Echo_temp=ifft(Echo_s.*Hf_s);%脉压后未去暂态点
Echo_pc=Echo_temp(nTe:nTe+fix(PRT*Fs)-1,:);%去掉暂态点
% figure;plot((0:fix(PRT*Fs)-1)*C/2/Fs*1e-3,20*log10(abs(Echo_pc(:,:))));%按列画出
% xlabel('距离/Km');ylabel('幅度/dB');grid on;title('回波信号脉压结果');legend('不加窗','加三角窗' ,'加汉明窗');
PC_max=max(20*log10(abs(Echo_pc)));%找出不同窗时的最大值
PC_lose=PC_max-PC_max(1)%显示出加窗后的最大值损失
Slfm_pc=20*log10(abs(Echo_pc((DelayNumber-nTe/2+1):(DelayNumber+nTe/2),:)));%线性调频信号的脉压结果
figure;plot(Slfm_pc(:,1)-PC_max(1));hold on;%归一化后结果 
plot(Slfm_pc(:,2)-PC_max(1),'r');hold on;%归一化后结果 
xlabel('时延/us');ylabel('幅度/dB');grid on;title('回波信号归一化脉压结果');legend('不加窗','加泰勒窗');
axis([0,320,-60,0]);

 % (6)搜索状态仿真
 V=Vs*cos((alpha+beta)/180*pi)%目标与导弹相对速度
Signal_ad=2^8*(Echo/max(abs(Echo)));%信号经过ad后
t_N=0:1/Fs:N_CI*PRT-1/Fs;
Signal_N=repmat(Signal_ad,1,N_CI);%64个周期回波(无噪声)
Signal_N=Signal_N.*exp(1j*2*pi*(2*V/lamda)*t_N);%引入多普勒频移
Noise_N=1/sqrt(2)*(normrnd(0,2^10,1,N_CI*nTr)+1j*normrnd(0,2^10,1,N_CI*nTr));% 噪声信号
Echo_N=Signal_N+Noise_N;%加噪声后的回波信号
Echo_N=reshape(Echo_N,nTr,N_CI);
figure;plot(abs(Echo_N));title('原始信号');%回波基带信号图像
xlabel('时域采样点');ylabel('幅度(模值)');grid on;
Echo_N_fft=fft(Echo_N,2048);%回波信号FFT
Hf_N=fft(Ht,2048);%频域脉压系数
Hf_N=repmat(Hf_N.',1,N_CI);%脉压系数矩阵
Echo_N_temp=ifft(Echo_N_fft.*Hf_N);%频域脉压,未去暂态点
Echo_N_pc=Echo_N_temp(nTe:nTe+nTr-1,:);%去掉暂态点
figure;plot((0:nTr-1)/Fs*C/2*1e-3,20*log10(abs(Echo_N_pc.')));title('回波信号脉压结果');
xlabel('距离单元/Km');ylabel('幅度/dB');grid on;
Echo_N_mtd=fftshift(fft(Echo_N_pc.'),1);%64脉冲相干积累和MTD
figure;mesh((0:nTr-1)/Fs*C/2*1e-3,(-32:31)/PRT/64,abs(Echo_N_mtd));
xlabel('距离/Km');ylabel('多谱勒频率/Hz');zlabel('幅度');grid on;title('64脉冲相干积累结果');set(gcf,'color',[1,1,1])
figure;contour((0:nTr-1)/Fs*C/2*1e-3,(-32:31)/PRT/64,abs(Echo_N_mtd),'bl');%画出相干积累的等高线图
xlabel('距离/Km');ylabel('多谱勒频率/Hz');zlabel('幅度');grid on;title('64脉冲相干积累等高线图');
[index_i index_j]=find(abs(Echo_N_mtd)==max(max(abs(Echo_N_mtd))));%找最大值多普勒单元对应的重复周期进行CFAR处理
V_fd=2*V/lamda %多普勒素的对应的多普勒频率
mtd_fd=(index_i-1)/PRT/64% 相参积累对应的多普勒频率
SNR_echo=20*log10(2^8/2^10)%原始回波基带信号信噪比
SNR_pc=SNR_echo+10*log10(BandWidth*TimeWidth)%脉压后信噪比
SNR_ci=SNR_pc+10*log10(64)%64脉冲相干积累后信噪比

%恒虚警
N_mean=8;N_baohu=4;K0_CFAR=(1/P_fa)^(1/N_mean)-1%计算系数K
CFAR_data=abs(Echo_N_mtd(index_i,:));%信号
K_CFAR=K0_CFAR./N_mean.*[ones(1,N_mean/2) zeros(1,N_baohu+1) ones(1,N_mean/2)];%恒虚警系数向量
CFAR_noise=conv(CFAR_data,K_CFAR);%恒虚警处理
CFAR_noise=CFAR_noise(length(K_CFAR):length(CFAR_data));%去暂态点
figure;plot(((N_mean+N_baohu)/2:nTr-(N_mean+N_baohu)/2-1)/Fs*C/2*1e-3,20*log10(CFAR_noise),'r-.');%恒虚警电平
hold on;plot((0:nTr-1)/Fs*C/2*1e-3,20*log10(CFAR_data),'b-');%信号
xlabel('距离/Km');ylabel('幅度');grid on;title('恒虚警处理');legend('恒虚警电平','信号电平');hold off

% (7)单脉冲测角
theta=(-theta_3dB:theta_3dB/1200:theta_3dB-theta_3dB/1200)*pi/180;%波束宽度范围内
Ftheta1=exp(-2.778*((theta-theta_3dB/2*pi/180).^2)/(theta_3dB*pi/180).^2);%波束1方向图函数
Ftheta2=exp(-2.778*((theta+theta_3dB/2*pi/180).^2)/(theta_3dB*pi/180).^2);%波束2方向图函数
Fsum=Ftheta1+Ftheta2;%和波束
Fdif=Ftheta1-Ftheta2;%差波束
Ferr=real(Fsum.*conj(Fdif))./(Fsum.*conj(Fsum));%归一化误差信号
figure;plot(theta*180/pi,Ftheta1,'r-.',theta*180/pi,Ftheta2,'b-.');
hold on;plot(theta*180/pi,Fsum,'r',theta*180/pi,Fdif,'b');
xlabel('角度/度');ylabel('幅度');grid on;title('和差波束');hold on;
plot(theta*180/pi,Ferr,'k');legend('波束1','波束2','和波束','差波束','误差信号');
K_theta=polyfit(theta(1100:1300)*180/pi,Ferr(1100:1300),1);
fprintf('误差信号斜率为 %5.4f\n',1/K_theta(1));

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

完整代码添加QQ1575304183

猜你喜欢

转载自blog.csdn.net/qq_34763204/article/details/113795836