SAR目标仿真,RD算法

距离多普勒算法(RDA)是在1976年至1978年为民用星载SAR提出的,它兼顾了成熟、简单、高效和精确等因素,至今仍是使用最广泛的成像算法。它分为三个步骤: 距离压缩(Range Compression, RC)、距离迁移校正(Range Cell Migration correction, RCMC)和方位压缩(Azimuth Compression, AC)。模拟仿真如下:

%============ SAR 三点回波模拟 正侧视RD算法 ======================
clc;
close all;
clear all;

c=3e8; %光速
f0=10e9; %雷达工作频率
lamd=c/f0; %雷达工作波长
Tp=1e-6; %
B=100e6; %
PRF=3600; %脉冲重复频率
fs=120e6; %
K=B/Tp; %

v=150; %等效雷达运动速度

x1=0;y1=0; %目标1位置
x2=0;y2=-50; %目标2位置
x3=0;y3=50; %目标3位置

Na=4096; % 方位向采样点数为4096
bet=18/180*pi; %
R0=1000;

Nr=256;
Tr=Nr/fs;
Ta=Na/PRF;

tr=2*R0/c+linspace(-Tr/2,Tr/2,Nr);
ta=linspace(-Ta/2,Ta/2,Na);
xr=v*ta;
yr=R0;
fr=fftshift(linspace(-fs/2,fs/2,Nr));
fa=linspace(-PRF/2,PRF/2,Na);
r=tr*c/2;
r_c=sqrt(xr.^2+yr^2);

%====================================产生回波===============================

rec_signal=zeros(Na,Nr);
for i=1:Na
puls_signal=zeros(1,Nr);
r1=sqrt((y1+yr).^2+(xr(i)-x1).^2);
cita1=atan(abs(x1-xr(i))/(yr+y1));
if (abs(cita1)<bet/2)
puls_signal=exp(j*(pi*K*(tr-2*r1/c).^2-2*pi*f0*2*r1/c)).*(abs(tr-2*r1/c)<Tp/2);
end

r2=sqrt((y2+yr).^2+(xr(i)-x2).^2);
cita2=atan(abs(x2-xr(i))/(yr+y2));
if (abs(cita2)<bet/2)
puls_signal=puls_signal+exp(j*(pi*K*(tr-2*r2/c).^2-2*pi*f0*2*r2/c)).*(abs(tr-2*r2/c)<Tp/2);%目标2回波
end

r3=sqrt((y3+yr).^2+(xr(i)-x3).^2);
cita3=atan(abs(x3-xr(i))/(yr+y3));
if (abs(cita3)<bet/2)
puls_signal=puls_signal+exp(j*(pi*K*(tr-2*r3/c).^2-2*pi*f0*2*r3/c)).*(abs(tr-2*r3/c)<Tp/2);%目标3回波
end
rec_signal(i,:)=puls_signal;
end
figure(1);
subplot(221);
imagesc(abs(rec_signal));
title(‘雷达原始信号1’);

%================================距离向脉压=================================

tran_signal=exp(1j*pi*fr.^2/K); %.*(abs(fr)<B/2); 这个范围限制最好要有,但为了方便改写C语言,不要范围图像也还可以,真正的改写要加上此范围
for i=1:Na
t = fft(rec_signal(i,:));
tt =t .*tran_signal;
rec_signal(i,:)=ifft(tt);
end
subplot(222);
imagesc(abs(rec_signal));
title(‘距离压缩后仿真图2’);
xlabel(‘距离向(采样点)’);
ylabel(‘方位向(采样点)’);

% %==============================插值法消除距离徙动===========================
signal_fft = fft(rec_signal,[],1);
rec_signal1=fftshift(signal_fft,1); %方位向变为频域
% rec_signal=fft(rec_signal,[],1);
% %方位向变为频域,只方位向FFT不行,需要FFT后进行fftshift操作

subplot(223);
imagesc(abs(rec_signal1));
title(‘方位向FFT后仿真图3’);
xlabel(‘距离向(采样点)’);
ylabel(‘方位向(采样点)’);

for i=1:Na
delt_r(i)=lamd.^2*R0*fa(i).^2/8/v.^2;
rec_signal(i,:)=interp1(r,rec_signal1(i,:),r+delt_r(i),’nearest’); %插值 分段线性插值 linear 球面插值spline 三次多项式插值pchip 临近插值nearest
end

subplot(224);
rec_signal_abs = abs(rec_signal);
imagesc(abs(rec_signal));
title(‘距离徙动校正后仿真图4’);
xlabel(‘距离向(采样点)’);
ylabel(‘方位向(采样点)’);

%================================方位向进行脉压===========================
%{
for ii=1:Nr
Ka=2*v.^2/lamd/r(ii);
puls_a=exp(-j*pi*fa.^2/Ka).*(abs(fa)<Ka*Ta/2);
rec_signal(ii,:)=ifft(rec_signal(ii,:).*puls_a);
end
%}
%以下为降低方位向旁瓣 18°可按照大斜视角做
for ii=1:Nr
Ka=sqrt( 1-(lamd.^2.*fa.^2) / ( 4*(v^2) ) );
theta = 2*pi.*tr(ii)*f0.*Ka;
puls_a=exp(j*2*pi.*tr(ii)*f0.*Ka);
rec_signal1(:,ii) = rec_signal(:,ii).*puls_a.’;
rec_signal2(:,ii)=ifft(rec_signal1(:,ii));
end
figure(2);
subplot(121);
imagesc(abs(rec_signal2));
title(‘目标图像5’);

% colormap(gray);
subplot(122);
rec_signal2_abs = abs(rec_signal2);
imagesc(abs(rec_signal2));
title(‘目标图像6’);
xlabel(‘距离向(采样点)’);
ylabel(‘方位向(采样点)’);

参考文献:https://blog.csdn.net/a1367666195/article/details/106614707

 

本文为原创文章,转载请注明出处!