📄 rda.m
字号:
clear;
close all;
clc;
%下面是雷达参数设置,用于点目标成像;参数设置考虑到用RD算法时,不需要距离徙动校正
B=20*1e6; %线性调频信号带宽,为
tao=10*1e-6; %雷达发射脉冲的宽度,为
prf=500; %脉冲重复频率,为
Tp=1/prf; %脉冲重复周期,为
v=100; %载有雷达的飞行器作匀速直线运动的速度,为100m/s
fsample=B*1.25; %采样率,为25MHz
Ls=400; %合成孔径长度,为400m
Ts=Ls/v; %合成孔径时间,为4s
c=3*1e8; %光速,为3*10^8m/s
lambda=0.03; %发射波波长,为0.03m
R0=39*1e3; %参考距离,为39km
Kr=B/tao; %距离向调频斜率,为2*10^12
Ka=-2*v^2/(lambda*R0); %方位向匹配信号调频斜率,为-17.094
%参数设置结束
%下面是获得方位向发射脉冲数及距离向抽样数
N=round(Ts*prf)+1; %方位向发射脉冲数为雷达天线扫过点目标,孔径时间内发射的脉冲数,为
M=round(tao*fsample)+1; %距离向抽样数为脉冲宽度内以采样率采样的数据量,为
%矩阵维数确定:N*M
for n=1:N
R(n)=R0+(v*(n-1000)*Tp)^2/(2*R0); %确定载机和目标之间的距离,这个公式是近似的。因为参数设置满足近似条件。
end
%下面构建回波模型
t=zeros(N,M);
for n=1:N
t(n,:)=(round(-tao*fsample/2):(round(tao*fsample/2)))+fsample*2*R(n)/c; %每个时刻距离的延时不相同
end
S=zeros(N,M);
S1=zeros(N,M);
for n=1:N
for m=1:M
S(n,m)=exp(j*pi*Kr*(t(n,m)/fsample-2*R(n)/c).^2)*exp(-j*4*pi*R(n)/lambda); %回波信号函数形式
end
end
figure(1);
imshow(S);
title('回波信号');
%回波信号构造完毕
%RD算法流程:距离压缩--〉方位向傅里叶变换--〉距离徙动校正(之前的参数设置已经可以舍去校正)--〉方位压缩--〉方位向傅里叶逆变换及多视叠加--〉压缩数据
%下面完成距离向频率和方位向频率的计算
fa=-(N-1)/2:(N-1)/2;
fa=fa/N*prf; %方位向频率
fr=-(M-1)/2:(M-1)/2;
fr=fr/M*fsample; %距离向频率
%回波信号的距离傅里叶变换
for n=1:N
S(n,:)=fftshift(fft(S(n,:)));
end
figure(2);
surf(abs(S));
axis tight;
shading interp;
title('回波信号的距离傅里叶变换');
%距离压缩是回波信号的距离傅里叶变换通过匹配滤波器之后的输出
for n=1:N
S(n,:)=ifftshift(ifft(S(n,:).*conj(S(n,:))));
end
figure(3);
surf(abs(S));
axis tight;
title('距离压缩结果');
shading interp;
%下面是方位向傅里叶变换
for m=1:M
S(:,m)=fftshift(fft(S(:,m)));
end
figure(4);
surf(abs(S));
axis tight;
title('方位傅里叶变换输出结果');
shading interp;
%下面的处理将距离徙动校正舍去,近似认为参数设置比较理想。并进行单视处理。
%最后一步进行方位压缩,并获得理想结果
for m=1:M
S(:,m)=S(:,m).*conj(S(:,m));
S1(:,m)=20*log10(abs(S(:,m))+(1e-6));
end
figure(5);
subplot(211);
surf(abs(S));
axis tight;
title('方位向匹配滤波结果/幅度');
shading interp;
subplot(212);
surf(abs(S1));
axis tight;
shading interp;
title('方位向匹配滤波结果/分贝');
%下面进行逆傅里叶变换获得时域冲激
for n=1:N
for m=1:M
S(n,m)=ifftshift(ifft(S(n,m)));
S1(n,m)=20*log10(abs(S(n,m))+(1e-6));
end
end
figure(6);
surf(abs(S));
axis tight;
title('时域输出/幅度');
shading interp;
figure(7);
surf(abs(S1));
axis tight;
title('时域输出/分贝');
shading interp;
figure('position',[0 0 1024 700]);
imshow(S);
title('平面显示');
%全部结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -