RD算法于1978年处理出第一幅机载SAR数字图像,至今仍在广泛使用,它通过距离和方位上的频域操作,达到了高效的模块化处理要求,同时又具有了一维操作的简便性。该算法根据距离和方位上的大尺度时间差异,在两个一维操作之间使用距离徙动校正(RCMC),对距离和方位进行了近似的分离处理。
由于RCMC是在距离时域-方位频域中实现的,所以也可以进行高效的模块化处理。因为方位频率等同于多普勒频率,所以该处理域又称为“距离多普勒”域。RCMC的“距离多普勒”域实现是RD算法与其他算法的主要区别点,因而称其为距离多普勒算法。
距离相同而方位不同的点目标能量变换到方位频域后,其位置重合,因此频域中的单一目标轨迹校正等效于同一最近斜距处的一组目标轨迹的校正。这是算法的关键,便RCMC能在距离多普勒域高效地实现。
为了提高处理效率,所有的匹配滤波器卷积都通过频域相乘实现,匹配滤波及RCMC都与距离可变参数有关。RD算法区别于其他频域算法的另一王要特点是较易适应距离向参效的变化。所有运算都针对一维数据进行,从而达到了处理的简便和高效。
基本的RD算法流程如下:
在这里插入图片描述
下面给出仿真实验代码
仿真参数:
在这里插入图片描述
close all; clear; clc;
c = 3e8; % 光速
fc = 5e9; %载波频率
B = 200e6; %带宽
lambda = c/fc; %波长
Tp = 1.5e-6; %脉宽
Kr = B/Tp; %调频率
fs = 1.6*B; %采样率
H = 200 ; %飞机高度
Ls = 200 ; %合成孔径长度
v = 100 ; %飞机速度
Lt = Ls/v; %合成孔径时间
%成像区域[X0-Xc,X0+Xc; Y0-Yc,Y0+Yc]
%以合成孔径中心为原点,距离向为x轴,方位向为y轴
Xc = 10000 ;
Yc = 0;
Xo = 100 ;
Yo =100 ;
Rc =sqrt(H2+Xc2); %中心距离
Ka = 2v^2/(Rclambda); %多普勒调频率
Bmax = LtKa; %多普勒最大带宽
fa = ceil(3Bmax); %脉冲重复频率
Rmin = sqrt(H2+(Xc-Xo)2); %观测场景距飞机的最近距离
Rmax = sqrt((Xc+Xo)2+H2+(Yc+Yo+Ls/2)^2); %最远距离
rm = Ls + 2Yo; %雷达走过的总路程长度
tm= 0:1/fa:rm/v-1/fa; %慢时间(合成孔径时间+成像区域时间)
tk= 2Rmin/c-Tp/2:1/fs:2*Rmax/c-1/fs+Tp/2; %快时间(距离门内)
target = [Xc,Yc,0;
Xc+80,Yc+45,0;
Xc-20,Yc-20,0]; %目标坐标
echo = zeros(length™,length(tk),length(target)); %回波
echo_all = zeros(length™,length(tk));
y = -v*(rm/v)/2+vtm; %飞机y轴坐标
for k=1:size(target,1) %目标数
for i=1:length™ %慢时间轴
radar = [0,y(i),H ]; %飞机坐标
Rtm = sqrt(sum((target(k,:)-radar).^2));
echo(i,:,k)=(abs(target(k,2)-y(i))/Xc < 0.01)rectpuls(tk-2Rtm/c,Tp).…
exp(1j2pifc(tk-2Rtm/c)+1jpiKr(tk-2Rtm/c).^2); %回波模型
%注意上边为什么是tk-tr(i)-Tp/2,而不是tk-tr(i)
end
echo_all = echo(:,:,k) + echo_all;
end
r=((tkc/2).2-H2).^(1/2);
%% 距离向匹配滤波
for i = 1:size(echo_all,1)
echo_all(i,:) = echo_all(i,:).(exp(-1j2pifctk)); %回波去载频
end
tt=0:1/fs:Tp-1/fs;
hk=exp(1jpiKrtt.^2); %距离向匹配滤波器
ECHO = zeros(size(echo_all)); %距离向压缩之后
for i=1:length™
ECHO(i,:) = ifft(fft(echo_all(i,:)).*conj(fft(hk,length(tk))));
end
figure;
[R,Y] = meshgrid(r,y);
mesh(R,Y,abs(ECHO));view(0,90);xlim([9900 10100]);
xlabel(‘距离向’);
% ylabel(‘合成孔径 (慢时间), meters’);
title(‘距离压缩后’);
ha = exp(-1jpi2*(v2)/(lambda*Rc)*(0:1/fa:Lt-1/fa).2); %方位向匹配滤波器
for k=1:length(tk)
ECHO(:,k) = fftshift(fft(ECHO(:,k)));
end
%% 距离徙动修正
N=6; %插值核长度为6
ECHO_RCMC=zeros(size(ECHO));
h = waitbar(0,‘Sinc插值中…’); %生成一个进度条
for k = 1:length™
f =linspace(-fa/2,fa/2,length™);
deltaR = (lambdaf(k)/v)^2Rc/8; %注意这个f,到底是哪个f
DU = 2deltaRfs/c;
du = DU-floor(DU);
% kernel_norm = sum(sinc(du-(-N/2:N/2-1)));
for n = N/2+1:length(tk) %快时间
for m = -N/2:N/2-1
if n+floor(DU)+m>length(tk)
ECHO_RCMC(k,n) = ECHO_RCMC(k,n)+ECHO(k,length(tk))*sinc(DU-m);
else
ECHO_RCMC(k,n) = ECHO_RCMC(k,n)+ECHO(k,n+floor(DU)+m)*sinc(du-m);
end
end
end
waitbar(k/length™);
end
close(h); %关闭进度条
figure;
[R,Y] = meshgrid(r,y);
mesh(R,Y,abs(ifft(ECHO_RCMC)));view(0,90);xlim([9900 10100]);
title(‘距离徙动矫正’)
xlabel(‘距离向’);
%% 方位向匹配滤波
for k=1:length(tk)
ECHO(:,k) = abs(ifft(fft(ha,length™)’.*fftshift(ECHO_RCMC(:,k)))); %方位向压缩后
end
figure;
mesh(r,y,ECHO);
xlim([9900 10100]);
xlabel(‘距离向’);
ylabel(‘方位向’);
zlabel(‘幅度’); title(‘最终压缩结果’);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
点赞
评论
1
分享
收藏
举报
关注
一键三连
点赞Mark关注该博主, 随时了解TA的最新博文
SAR成像仿真-RD算法(Matlab版,含注释)
09-13
合成孔径雷达成像技术是雷达体制中较新的一种,在军事国防领域具有重要的地位,受国内外的广泛的关注。 RD算法是一种基础的SAR成像算法,学生仿真中用的最多,本人将自己做的RD算法整理后分享给大家,希望对
SAR成像RD算法MATLAB仿真
po_huang的博客
9037
SAR成像RD算法MATLAB仿真 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % SAR imaging: RD_algorithm % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%…