clear;
close all;
clc;
%% 程序说明
% 线性调频雷达
% 非相参
%% 信号参数
% 脉冲重复周期
PRT = 1000e-6;
PRF = 1/PRT;
% 脉冲数
Mslow = 1000;
% 信号时长
T = Mslow*PRT;
% 快时间采样频率
Fr = 75e6;
% 快时间点数
Nfast = 1000;
% 脉宽
tw = 4e-6;
% 光速
c = 3e8;
% 载频
fc = 3e9;
lambda = c/fc;
% 波长
% 发射信号带宽
br = 10e6;
% 发射信号调频率
kr = br/tw;
ta = (0:Mslow-1)*PRT;
ta = ta(:);
tr = (0:Nfast-1)/Fr;
%% 平台与目标瞬时距离(慢时间)
R0 = 50e3;
v = 10;
Rt_uav_t = R0+v*ta;
%------------------------------信号处理------------------------------------
%% 接收信号生成
snr = 5; % 信噪比
% 参考距离
RkT = ceil(min(Rt_uav_t)/300)*300-500;
% 相对距离(信号截取时的距离)
Rk = Rt_uav_t-RkT;
% 径向速度
vk = 2*diff(Rk)/PRT;
% 瞬时多普勒频率
fdk = -[vk;2*vk(Mslow-1)-vk(Mslow-2)].*fc/c;
% 相对时延
tauk = 2*Rk/c;
tk = ones(Mslow,1)*tr-tauk*ones(1,Nfast);
pha = 2*pi*rand(Mslow,1)*ones(1,Nfast);
% 信号截取的相位历程
phasek = pi*kr*(tk-tw/2).^2+2*pi*(fc*ones(1,Nfast)).*tk+2*pi*fdk*tr+pha;
% 信号
Srnm = 30*exp(1i*phasek).*(0<tk&tk<tw);
% 加噪声
% Srnm = awgn(Srnm,snr,'measured');
fr = -linspace(-Fr/2,Fr/2,Nfast);
figure;
imagesc(abs(Srnm));
xlabel('快时间点数');
ylabel('慢时间点数');
title('接收信号(快时间时域)');
%% 距离脉压
R = RkT+c*tr/2;
Srnm1 = zeros(Mslow,Nfast);
% kr = kr*(1+0.0131*randn(1));
% tw = tw*(1+0.0135*randn(1));
for m=1:Mslow
hrc = exp(1i*pi*kr*(tr-tw/2).^2).*(0<tr&tr<tw); % 距离维匹配滤波器
Srnm1(m,:) = ifft((fft(Srnm(m,:),Nfast).*conj(fft(hrc,Nfast))),Nfast);
end
figure;
mesh(abs(Srnm1));
xlabel('距离时域/point');
ylabel('方位时域/point');
title('距离压缩后图像(去线性调频调制)');
%% 距离多普勒域
fd = linspace(-PRF/2,PRF/2,Mslow);
vd = -lambda*fd/2;
Srnm2 = fftshift(fft(Srnm1),1);
figure;
mesh(R,vd,abs(Srnm2));
xlabel('距离(m)');
ylabel('速度(m/s)');