【雷达通信】基于matlab雷达前视成像仿真【含Matlab源码 643期】

一、简介

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

二、源代码

clear all;clc; close all;
%  前视线阵
%% 参数
C=3e8;
fc=10e9;
lambda=C/fc;
v=100; 
Tp=1.5e-6;
N=60; %阵元个数
B=100e6;
Fs=120e6;
gama=B/Tp;
Da=0.2;
H=600;
PRF=1000; %阵元切换速度
phi=45/180*pi; %俯视角
theta=24/180*pi; %波束宽度
d=0.3;% 阵元间距
va=d*PRF; %方位速度
nrn=200;
nan=N;
Rs=H*sqrt(2);
%% point targets
% point=[600 0 0; 650 0 0; 600 50 0 ; 600 -50 0; 550 0 0 ];
point=[600 0 0];
point_num=size(point,1);
%% 
La=N*(Da+d);
ta=[-N/2:N/2-1]/PRF;
Tstart=2*Rs/C-nrn/2/Fs;  %起始时刻
Tend=2*Rs/C+(nrn/2-1)/Fs; %终止时刻
tr=[Tstart:1/Fs:Tend].';   %快时间 
%%
x_pos=ta.*v;
y_pos=ta.*va;
z_pos=H;
R0=sqrt(z_pos^2+(600-v.*ta).^2);
Rr=sqrt(R0.^2+(va.*ta).^2);
%% echo
x=zeros(nrn,nan,'single');
for m=1:N
    temp1=zeros(nrn,1);
    for num=1:point_num
        x_temp=abs(x_pos(m)-point(num,1));
        y_temp=y_pos(m)-point(num,2);
        z_temp=z_pos-point(num,3);
        Rt=sqrt(x_temp^2+y_temp^2+z_temp^2);
        alpha=atan(y_temp./sqrt(x_temp.^2+z_temp.^2));
        if (alpha>=-theta/2 && alpha<=theta/2)
            Rt=sqrt(x_temp^2+y_temp^2+z_temp^2);
            Wr=abs(tr-2*Rt/C)<=Tp/2;
            temp2=Wr.*exp(j*pi*gama*(tr-2*Rt/C).^2).*exp(-j*4*pi*Rt/lambda);
            temp1=temp1+temp2;
        end
    end
    x(:,m)=temp1;
end
figure;imagesc(abs(x));   
ka=(-2/lambda).*(va^2./R0);  %方位调频率
fr=[-nrn/2:nrn/2-1]'/nrn*Fs;
del_ran=Rr-Rs;

%% range compress
fr=[-nrn/2:nrn/2-1]'/nrn*Fs;
% length=(fr/abs(gama)/Tp);
Hp=exp(j*pi*(2*v/lambda+(fr.^2)/gama));
%%
x=fftshift(fft(fftshift(x)));
for m=1:N
    temp2=exp(j*4*pi*del_ran(m)/C*fr);
    temp1=x(:,m).*Hp.*temp2;
    x(:,m)=fftshift(fft(fftshift(temp1)));
end
figure;imagesc(abs(x));
%%
for n=1:nrn
    xa(n,:)=fftshift(fft(fftshift(x(n,:)))); 
end
delta_R=((va.*ta).^2)./(2*R0);
Curve=delta_R*2*Fs/C;
delta_RMC=Curve-floor(Curve);%小数部分
% sinc
P=4;
temp=zeros(nrn,nan);
for n=1:nan
    for m=P:nrn
        for i=-P/2:P/2
            if m+Curve(n)+i>nrn
                temp(m,n)=temp(m,n)+xa(nrn,n)*sinc((-i+Curve(n)));
            else
                temp(m,n)=temp(m,n)+xa(m+floor(Curve(n))+i,n)*sinc((-i+delta_RMC(n)));
            end
        end
    end
end

三、运行结果

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

四、备注

版本:2014a

你可能感兴趣的:(matlab,信号处理)