RD算法及其距離徙動校正

RD算法流程圖:
圖1  RD算法流程圖
圖1 RD算法流程圖
因爲是在word裏寫的,這裏直接上截圖了,不然mathtype公式顯示不出來。
對於RD算法的原理這裏就不展開討論了,重點分析距離徙動校正的原理。
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
仿真程序,F_s=2.5B,距離徙動最大2.92m,對應7.3個距離單元。PRF取1.2倍多普勒帶寬,目標點相對於參考點的位置爲(-50,50,0),則仿真結果如下:觀察圖2,可以看出經過距離徙動校正後,距離多普勒域圖像由彎曲變直;觀察圖3,可以看出RD算法比簡單的二維脈壓成像結果分辨率高,即經過距離徙動校正能提高分辨率。
圖2-1 距離多普勒域成像結果
圖2-1 距離多普勒域成像結果
圖2-2 放大後的距離多普勒域成像結果
圖2-2 放大後的距離多普勒域成像結果
圖3-1 二維脈壓成像結果
圖3-1 二維脈壓成像結果
圖3-2 RD算法成像結果
圖3-2 RD算法成像結果
程序

%仿真具有3個以上距離徙動回波信號,進行RD成像
close all;clear;

%基本參數
c = 3*10^8;  %波速
fc = 5.3*10^9;  %載頻5.3GHz
lamda = c/fc;  %波長
v = 150;  %雷達速度150m/s
B = 150*10^6;  %發射信號帶寬150MHz
Daz = 2;  %方位天線尺寸2m
R0 = 20*10^3;  %參考點斜距20km
Tr = 1.5*10^-6;  %脈衝持續時間
Kr = B/Tr;  %線性調頻信號調頻斜率
H = 1000;  %雷達高度
Yc = sqrt(R0^2-H^2);  %成像中線  
center = [0,Yc,0];  %場景中心座標
CR = Daz/2;  %橫向分辨率
thetaaz = lamda/Daz;  %波束寬度
Fs = 2.5*B;  %採樣頻率
Dsar = lamda*R0/(2*CR);  %合成孔徑長度
Tsar = Dsar/v;  %一個合成孔徑時間
Ka = -2*v^2/(lamda*R0);  %多普勒調頻斜率
Ba = abs(Ka*Tsar);  %多普勒帶寬
PRF = 1.2*Ba;  %脈衝重複頻率
X = 150;Y = 150;  %場景大小
Rmin = sqrt((Yc-Y/2)^2+H^2);  %場景最小距離
Rmax = sqrt((Yc+Y/2)^2+H^2+(Dsar/2)^2);  %場景最大距離
Nfast = ceil(((2*(Rmax-Rmin)/c+Tr)*Fs));  %快時間維採樣點數
tf = 2*R0/c+(-(Nfast/2):(Nfast/2)-1)/Fs;  %快時間採樣序列
Nslow = ceil((X+Dsar)/v*PRF);  %慢時間維(方位向)採樣點數
ts = (-(Nslow/2):(Nslow/2)-1)/PRF;  %慢時間採樣序列
pos = [-50,50,0,3];  %目標相對中心點位置,[x,y,z,rcs],第四列爲後向反射係數
disp('目標位置(方位,斜距,高度):');
Rpos(1:3) = pos(1:3)+center  %目標絕對位置
Rpos(:,4) = pos(:,4);

%回波信號
signal = zeros(Nfast,Nslow);
Xs = ts.*v-Rpos(1);  
Ys = 0-Rpos(2);
Zs = H-Rpos(3);
sigma = Rpos(4);  %反射係數
R = sqrt(Xs.^2+Ys^2+Zs^2);  %斜距
tau = 2*R/c;  %時延
Tfast = tf'*ones(1,Nslow)-ones(Nfast,1)*tau;   %列是快時間  行是慢時間
Phase = pi*Kr.*Tfast.^2-(4*pi/lamda)*ones(Nfast,1)*R;   %相位延遲
signal = signal+sigma*exp(j*Phase).*(abs(Tfast)<=Tr/2).*(ones(Nfast,1)*(abs(Xs)<=Dsar/2));  %回波
S = fftshift(fft(fftshift(signal)));

%二維脈壓
hf = exp(j*pi*Kr*(tf-2*R0/c).^2).*(abs(tf-2*R0/c)<=Tr/2);  %距離向參考函數
Hf = (fftshift(fft(fftshift(hf))).')*ones(1,Nslow);
ComF = S.*conj(Hf);  %距離向匹配濾波
Sr = fftshift(ifft(fftshift(ComF)));  %距離向IFFT
Coms = fftshift(fft(fftshift(Sr.'))).';  %方位向FFT
hs = exp(j*pi*Ka*ts.^2).*(abs(ts)<Tsar/2);  %方位向參考函數
Hs = ones(Nfast,1)*fftshift(fft(fftshift(hs)));
ComS = Coms.*conj(Hs);  %方位向匹配濾波
Saz = fftshift(ifft(fftshift(ComS.'))).';

%RD算法,sinc插值
Coms_rcmc = zeros(Nfast,Nslow);
N = 6;  %插值點數
Rp = sqrt(sum((Rpos(2:3)-[0,H]).^2));  %目標到雷達的最近距離
h = waitbar(0,'Sinc插值中......');  %生成一個進度條
for m = 1:Nslow  %慢時間
  for n = N/2+1:Nfast  %快時間
      %距離偏移量
      deltaR = (lamda/v)^2*(Rp+(n-Nfast/2)*c/2/Fs)*((m-Nslow/2)/Nslow*PRF)^2/8;
      DU = deltaR/(c/2/Fs);  %偏移距離單元
      deltaDU = DU-floor(DU);  %偏移距離單元小數部分
      for k = -N/2:N/2-1
          if (n+floor(DU)+k)>Nfast %超出邊界
              Coms_rcmc(n,m) = Coms_rcmc(n,m)+Coms(Nfast,m)*sinc(DU-k);
          else
              Coms_rcmc(n,m) = Coms_rcmc(n,m)+Coms(n+floor(DU)+k,m)*sinc(deltaDU-k);
          end
      end
  end
  waitbar(m/Nslow);
end
close(h);  %關閉進度條
ComS_rcmc = Coms_rcmc.*conj(Hs);  %方位向壓縮
Saz_rcmc = fftshift(ifft(fftshift(ComS_rcmc.'))).';

%畫圖
rf = c*tf/2;  %距離
az = v*ts;  %方位
faz = (-Nslow/2:Nslow/2-1)/Nslow*PRF;  %多普勒頻率
figure(1);
[f,Rf] = meshgrid(faz,rf);
subplot(121);
mesh(f,Rf,abs(Coms));view(0,90);
title('(a) 未RCMC');
xlabel('多普勒/Hz');ylabel('斜距R/m');
subplot(122);
mesh(f,Rf,abs(Coms_rcmc));view(0,90);
title('(b) RCMC');
xlabel('多普勒/Hz');ylabel('斜距R/m');
figure(2);
[Az,Rf] = meshgrid(az,rf);
mesh(Az,Rf,abs(Saz));view(0,90);
title('二維脈壓成像結果');
xlabel('方位x/m');ylabel('斜距R/m');
figure(3);
mesh(Az,Rf,abs(Saz_rcmc));view(0,90);
title('RD算法成像結果');
xlabel('方位x/m');ylabel('斜距R/m');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章