重点
• SAR成像几何关系;SAR回波模型;SAR成像模型;
• RD成像算法;SAR成像质量;
• 距离徙动;距离校正;
• 实时成像;回波模拟;
要求
• 掌握SAR回波模拟的过程;
• 理解距离徙动的概念;
• 掌握RD成像算法的过程。
一、成像模型
对合成孔径原理的理解
l 方位向虚拟阵列天线合成大孔径
l 方位向多普勒频率变化形成LFM信号
》》》雷达与目标发生相对运动,引起两者相对位置的改变,这是实现合成孔径的物理基础;
SAR成像主要围绕以上相对位置(方位向+距离向)的变化展开研究工作。
l 距离向时间τ,一般为us量级,快时间;
l 方位向时间t,一般为ms量级,慢时间。
根据时间的定义,回波接收与平台运动过程可假设为START-STOP过程
即雷达在每一个脉冲发射与接收过程中方位向保持静止,这便于理解回波形成过程,也便于后续成像算法的设计与理解。
% 名称: 基于RD算法的雷达成像仿真 % 作者: _Sure_ % 时间: 2016.05.25 %%产生Stripmap SAR的回波 close all; clear all; clc; %{ close all 是关闭所有窗口(程序运行产生的,不包括命令窗,editor窗和帮助窗) clear all是清除所有工作空间中的变量 clc 是清除命令行 clear 是清除那一堆存在内存里的数据的, close 是关闭打开了的文件,一般文件开头写 %}
%---------------------------------start-----------------------------------% %-------------------------------基本参数设置-------------------------------% thetaT=0; %T平台波束斜视角 thetaT=thetaT*pi/180; %rad弧度 thetaR=0; %R平台波束斜视角 thetaR=thetaR*pi/180; %rad弧度 c=3e8; %光速 fc=1.5e9; %载波频率1.5G lambda=c/fc; %载波的波长
%%-----------测绘带区域---------------- X0=?; %方位向[-X0,X0],范围有自己根据实际情况确定 Rtc=3000; %载波发射距离 Rrc=3000; %载波接收距离 Rc=(Rtc+Rrc)/2; %载波距离向 R0=150; %距离向[Rc-R0,Rc+R0]
%%-----------距离向(Range),r/t domain--- Tr=1.5e-6; %LFM信号脉宽 1.5us (200m) %{ 概念普及: LFM信号:(Linear-freuency-modulation) 线性调频信号 %} Br=150e6; %LFM信号带宽 150MHz Kr=Br/Tr; %调频斜率 Nr=512; %快时间采样点数 %+++++距离域序列+++++ r=Rc+linspace(-R0,R0,Nr); %距离域序列 %{ 概念普及: linspace(-A,A,M):生成一些从—A到+A的M份等间距的数值 举例: linspace(-5,5,6) ans = -5 -3 -1 1 3 5 %} t=2*r/c; %距离域t值对应 dt=R0*4/c/Nr; %快时间采样周期 %+++++频率域序列+++++ f=linspace(-1/2/dt,1/2/dt,Nr); %f域序列
%%----------方位向(Azimuth,Cross-Range),x/u domain---- v=100; %SAR 平台移动速度 %{ 概念普及: 合成孔径雷达——SAR ——Synthetic Aperture Radar 的缩写 合成孔径观点: 用运动的小天线合成一个大天线 SAR在方位向是真正的微波全息; 通过PRF进行方位向全息图的采样; 采样间隔必须固定不变,因此要求PRF与地速成正比. %} Lsar=300; %合成孔径长度 Na=1024; % 慢时间采样点数 %+++++u域序列+++++ x=linspace(-X0,X0,Na); %u域序列 u=x/v; %u域序列t值对应 du=2*X0/v/Na; %慢时间采样间隔 %+++++fu域序列+++++ fu=linspace(-1/2/du,1/2/du,Na);%fu域序列 ftdc=v*sin(thetaT); %SAR-T平台波束速度 ftdr=-(v*cos(thetaT))^2/lambda/Rtc; frdc=v*sin(thetaR); %SAR-R平台波束速度 frdr=-(v*cos(thetaR))^2/lambda/Rrc; fdc=ftdc+frdc; %Doppler调频中心频率 fdr=ftdr+frdr; %Doppler调频斜率 %-------目标位置----------- Ntar=3;%目标个数 Ptar=[ Rrc , 0 , 1 %参数对应:距离向坐标,方位向坐标,sigma Rrc+50, -50, 1 Rrc+50, 50, 1];
%%-----------LFM产生回波--------- s_ut=zeros(Nr,Na); %生成m×n的double类零矩阵,设定数值内存 %{ 概念普及: zeros: zeros(m,n)产生m×n的double类零矩阵,zeros(n)产生n×n的全0方阵。 举例 zeros(2,4) ans = 0 0 0 0 0 0 0 0 zeros(4) ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %} U=ones(Nr,1)*u; %扩充为矩阵 T=t'*ones(1,Na); % 将快时间拓展为 Na 列 %{ 概念普及: ones: ones函数——生成全1阵 zeros(m,n)产生m×n的double类零矩阵,zeros(n)产生n×n的全0方阵。 举例 ones(1,6) ans = 1 1 1 1 1 1 %} for i=1:1:Ntar rn=Ptar(i,1); % 目标距离向坐标 xn=Ptar(i,2); % 目标方位向坐标 sigma=Ptar(i,3); % 目标RCS rtn=rn+Rtc-Rrc; RT=sqrt(rtn^2+(rtn*tan(thetaT)+xn-v*U).^2); % 发射 目标斜距 RR=sqrt(rn^2+(rn*tan(thetaT)+xn-v*U).^2); % 接收 目标斜距 R=RT+RR; DT=T-R/c; phase=pi*Kr*DT.^2-2*pi/lambda*R; s_ut=s_ut+sigma*exp(j*phase).*(abs(DT)<Tr/2).*(abs(v*U-xn)<Lsar/2); end; %-------------------------------end---------------------------------------%
%%-------------距离压缩------------- %参考信号 p0_t=exp(j*pi*Kr*(t-2*Rc/c).^2).*(abs(t-2*Rc/c)<Tr/2); %距离向LFM信号 p0_f=fftshift(fft(fftshift(p0_t))); % 距离向LFM参考信号的快速傅里叶变换 %{ 概念普及:Matlab fftshift 详解 一. 实信号情况 因为实信号以fs为采样速率的信号在 fs/2 处混叠,所以实信号fft的结果中前半部分对应 [0, fs/2],后半部分对应[ -fs/2, 0] 1)实信号fft的结果前半部分对应[0, fs/2]是正频率的结果,后半部分对应[ -fs/2, 0]是 负频率的结果。大于fs/2的部分的频谱实际上是实信号的负频率加fs的结果。故要得到 正确的结果,只需将视在频率减去fs即可得到频谱对应的真实负频率 2)如果要让实信号fft的结果与[-fs/2, fs/2]对应,则要fft后fftshift一下即可, fftshift的操作是将fft结果以fs/2为中心左右互换 3)如果实信号fft的绘图频率f从[-fs/2, fs/2],并且没有fftshift,则fft正频谱对应 f在[0, fs/2]的结果将混叠到(f - fs/2)的位置;fft负频谱对应f在[-fs/2, 0]的结果 混叠到 f + fs - fs/2 的位置,注意这里f为负值,也就是说此种情况下fft负频谱对 应的视在频率减去fs/2即可得到频谱对应的真实负频率 二. 复信号情况 1)复信号没有负频率,以fs为采样速率的信号,fft的频谱结果是从[0, fs]的。 2)在 f > fs/2 时,对复信号的fft结果进行fftshift会产生频率混叠(将下面的示例2中 的频率从f=15改为f=85可以验证f=85的谱线在fftshift后跑到 f = -15 = 85 - fs = 85 - 100的位置了),所以复信号也一般要求 f <= fs/2 3)在对雷达的慢时间维(复信号)进行fft后,由于要用doppler = ((0:LFFT-1)/LFFT - 0.5)*PRF; 计算多普勒频率,所以对该慢时间信号fft后要fftshift下,以便和正确 的频率单元相对应。注意多普勒频率fd < = PRF/2 时才测的准! %}
%--------------------距离向压缩--------------- s_uf=fftshift(fft(fftshift(s_ut))); %距离向FFT %{ 概念普及: fftshift 作用:将零频点移到频谱的中间 用法: Y=fftshift(X) Y=fftshift(X,dim) 描述:fftshift移动零频点到频谱中间,重新排列fft,fft2和fftn的输出结果。将 零频点放到频谱的中间对于观察傅立叶变换是有用的。 %} src_uf=s_uf.*(conj(p0_f).'*ones(1,Na)); %距离压缩 src_ut=fftshift(ifft(fftshift(src_uf))); % IFFT后得到距离压缩后的信号
%--------------------方位向压缩-------------- src_fut=fftshift(fft(fftshift(src_ut).')).'; %距离多普勒域 %%二次距离压缩,距离迁移校正原理仿真 src_fuf=fftshift(fft(fftshift(src_uf).')).'; %距离压缩后的二维频谱 F=f'*ones(1,Na);%扩充为矩阵 FU=ones(Nr,1)*fu; p0_2f=exp(j*pi/fc^2/fdr*(FU.*F).^2+j*pi*fdc^2/fc/fdr*F-j*pi/fc/fdr*FU.^2.*F); s2rc_fuf=src_fuf.*p0_2f; s2rc_fut=fftshift(ifft(fftshift(s2rc_fuf)));%距离多普勒域 %%
%方位压缩 p0_2fu=exp(j*pi/fdr*(FU-fdc).^2);%方位向压缩因子 s2rcac_fut=s2rc_fut.*p0_2fu;%方位压缩 s2rcac_fuf=fftshift(fft(fftshift(s2rcac_fut)));%距离方位压缩后的二维频谱 s2rcac_ut=fftshift(ifft(fftshift(s2rcac_fut).')).';%方位向IFFT %%
%% %%画图显示结果 subplot(221) G=20*log10(abs(s_ut)+1e-6); gm=max(max(G)); gn=gm-40;%显示动态范围40dB G=255/(gm-gn)*(G-gn).*(G>gn); imagesc(x,r-Rc,-G),colormap(gray) grid on,axis tight, xlabel('Azimuth') ylabel('Range') title('(a)原始信号')
subplot(222) G=20*log10(abs(src_fut)+1e-6); gm=max(max(G)); gn=gm-40;%显示动态范围40dB G=255/(gm-gn)*(G-gn).*(G>gn); imagesc(fu,r-Rc,-G),colormap(gray) grid on,axis tight, xlabel('Azimuth') ylabel('Range') title('(b)距离多普勒域频谱')
subplot(223) G=20*log10(abs(s2rc_fut)+1e-6); gm=max(max(G)); gn=gm-40;%显示动态范围40dB G=255/(gm-gn)*(G-gn).*(G>gn); imagesc(fu,r-Rc,-G),colormap(gray) grid on,axis tight, xlabel('Azimuth') ylabel('Range') title('(c)RMC后的RD域频谱')
感谢各位读者的支持,作者会努力提高博客水准,欢迎读者对错误或有待改进的地方提出建议和意见 .