function fd_center=DopplerCenterEstimation_MID_jie(x,v,PRF,lambda,Rs,DeltaR)
% clear;
% clc
% load yhf;
% x=x(2001:6000,:);
% v=v_part;
% DeltaR=C/2/Fs;
[nrn,nan]=size(x);
for n=1:nrn
c=x(n,2:nan).*conj(x(n,1:nan-1));
fd_center_n(n,1)=angle(mean(c))/(2*pi)*PRF;
end
% fdc_center=mid(fd_center_n);
fdc_center=fd_center_n(1500)
rs=[-nrn/2:nrn/2-1]'*DeltaR;
% % % % % % ka=-2*v*v*cos(beta)/lambda./(rs+Rs);
% % % % % % ka0=-2*v*v*cos(beta)/lambda./Rs;
ka=-2*v*v/lambda./(rs+Rs);
ka01=-2*v*v/lambda./Rs;
t_nan=[-nan/2+1:nan/2]/PRF;
f_slow=[-ceil(nan/2):nan-ceil(nan/2)-1]/nan*PRF;
f_slow=f_slow+fdc_center;
f_slow=fftshift(f_slow);
gama=sqrt(1-(lambda*f_slow/2/v).^2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% estimate ka
z_slt=zeros(nrn,nan);
for m=1:nrn
z_slt(m,:)=fft(x(m,:).*exp(-j*2*pi*fdc_center*t_nan));
z_slt(m,:)=ifft(z_slt(m,:).*exp(j*4*pi*(Rs+rs(m))/lambda*gama).*exp(-j*4*pi*(Rs+rs(m))/lambda-j*pi*1/ka(m)*f_slow.^2)).*exp(j*2*pi*fdc_center*t_nan);
% z_slt(m,:)=ifft(z_slt(m,:)).*exp(j*2*pi*fdc*t_nan);
end
for m=1:nrn
sref=exp(-j*pi*ka(m)*t_nan.^2);
z_slt(m,:)=z_slt(m,:).*sref;
end
step=4;part_nan=nan/2*step;
R_sum=zeros(part_nan,1);
for m=1:nrn/2
fy1=abs(fftshift(fft(z_slt(m,[1:nan/2]),nan/2*step)));
fy2=abs(fftshift(fft(z_slt(m,[nan/2+1:nan]),nan/2*step)));
% fy1=(fy1(nan/2*step/2-part_nan/2+1:nan/2*step/2+part_nan/2));
% fy2=(fy2(nan/2*step/2-part_nan/2+1:nan/2*step/2+part_nan/2));
fy1=sqrt(fy1(nan/2*step/2-part_nan/2+1:nan/2*step/2+part_nan/2));
fy2=sqrt(fy2(nan/2*step/2-part_nan/2+1:nan/2*step/2+part_nan/2));
fy1=orth(fy1.').';
fy2=orth(fy2.').';
[maxR(m,1),mopt(m,1),x1,x2,R]=fastcorr(fy1,fy2);
R_sum=R_sum+R;
end
if 1
R=R_sum;
[maxR,maxm]=max(R);
M=part_nan;
MM=fix(M/2);
point=1;
xstar=0;
if ((maxm~=1)&(maxm~=M*point))
f(1)=R(maxm-1);
f(2)=R(maxm);
f(3)=R(maxm+1);
fa=(f(1)+f(3)-2*f(2))/2;
fb=(f(3)-f(1))/2;
fc=f(2);
xstar=-fb/(2*fa);
end
mopt=(maxm+xstar-MM*point-1)/point;
ka_deviate0=-mopt/(nan/2*step)*PRF/(nan/2/PRF)
% ka_estimate=mid(ka_deviate0+ka01);
ka_estimate=(ka_deviate0+ka01);
ka_estimate = ka_estimate(round(length(ka_estimate)/2));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2
% for m=1:nrn
% z_slt(m,:)=fft(x(m,:).*exp(-j*2*pi*fdc_center*t_nan).*exp(-j*pi*ka_deviate0*t_nan.^2));
% z_slt(m,:)=ifft(z_slt(m,:).*exp(j*4*pi*(Rs+rs(m))/lambda*gama).*exp(-j*4*pi*(Rs+rs(m))/lambda-j*pi*1/ka(m)*f_slow.^2)).*exp(j*2*pi*fdc_center*t_nan);
% % z_slt(m,:)=ifft(z_slt(m,:)).*exp(j*2*pi*fdc*t_nan);
% end
%
% for m=1:nrn
% sref=exp(-j*pi*ka(m)*t_nan.^2);
% z_slt(m,:)=z_slt(m,:).*sref;
% end
%
% step=4;part_nan=nan/2*step;
%
% R_sum=zeros(part_nan,1);
% for m=1:nrn/2
% fy1=abs(fftshift(fft(z_slt(m,[1:nan/2]),nan/2*step)));
% fy2=abs(fftshift(fft(z_slt(m,[nan/2+1:nan]),nan/2*step)));
% % fy1=(fy1(nan/2*step/2-part_nan/2+1:nan/2*step/2+part_nan/2));
% % fy2=(fy2(nan/2*step/2-part_nan/2+1:nan/2*step/2+part_nan/2));
%
% fy1=sqrt(fy1(nan/2*step/2-part_nan/2+1:nan/2*step/2+part_nan/2));
% fy2=sqrt(fy2(nan/2*step/2-part_nan/2+1:nan/2*step/2+part_nan/2));
% fy1=orth(fy1.').';
% fy2=orth(fy2.').';
% [maxR(m,1),mopt(m,1),x1,x2,R]=fastcorr(fy1,fy2);
% R_sum=R_sum+R;
% end
%
% if 1
% R=R_sum;
% [maxR,maxm]=max(R);
%
% M=part_nan;
% MM=fix(M/2);
% point=1;
% xstar=0;
% if ((maxm~=1)&(maxm~=M*point))
% f(1)=R(maxm-1);
% f(2)=R(maxm);
% f(3)=R(maxm+1);
% fa=(f(1)+f(3)-2*f(2))/2;
% fb=(f(3)-f(1))/2;
% fc=f(2);
% xstar=-fb/(2*fa);
% end
% mopt=(maxm+xstar-MM*point-1)/point;
% ka_deviate1=-mopt/(nan/2*step)*PRF/(nan/2/PRF)
% ka_estimate=mid(ka01+ka_deviate1+ka_deviate0);
% end
%%%%%%%%%%%%%%%%%%%%%%% the fdc of first quarter and the last quarter apeture
for n=1:nrn
c1=x(n,2:nan/4).*conj(x(n,1:nan/4-1));
c2=x(n,2+nan*3/4:nan).*conj(x(n,nan/4*3+1:nan-1));
fd_center_1(n,1)=angle(mean(c1))/(2*pi)*PRF;
fd_center_2(n,1)=angle(mean(c2))/(2*pi)*PRF;
end
fdc_1=mid(fd_center_1);
fdc_2=mid(fd_center_2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% estimate the DeltaRR
x1=x(:,[1:nan/4]);
x2=x(:,[3*nan/4+1:nan]);
x1=abs(fftshift(fft(x1)));
x2=abs(fftshift(fft(x2)));
fy1=orth(sqrt(x1).');
fy2=orth(sqrt(x2).');
fy1=mean(fy1,2);
fy2=mean(fy2,2);
[maxR,moptt,x1,x2,R]=fastcorr(fy1,fy2);
DeltaRR=moptt*DeltaR;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% estimate m
De_fdc=fdc_1-fdc_2;
m=DeltaRR*2*ka_estimate/lambda/PRF/De_fdc;
m=round(m)
fd_center=fdc_center-m*PRF;
function [maxR,mopt,x1,x2,R,maxm]=fastcorr(x1,x2)
[M,N]=size(x1);
if (M==1)
x1=x1.';
x2=x2.';
M=N;
end
MM=fix(M/2);
%point=4;
point=1;
Vec_M=[0:M-1]';
a=fft(orth(abs(x1)));
b=fft(orth(abs(x2)));
R=abs(fftshift(ifft(a.*conj(b),M*point)))*point;
[maxR,maxm]=max(R);
xstar=0;
if ((maxm~=1)&&(maxm~=M*point))
f(1)=R(maxm-1);
f(2)=R(maxm);
f(3)=R(maxm+1);
fa=(f(1)+f(3)-2*f(2))/2;
fb=(f(3)-f(1))/2;
fc=f(2);
xstar=-fb/(2*fa);
end
mopt=(maxm+xstar-MM*point-1)/point;
function [x1]=mid(x)
x1 = x(round(length(x)/2));
没有合适的资源?快使用搜索试试~ 我知道了~
SAR多普勒中心估计Matlab代码
共10个文件
m:10个
4星 · 超过85%的资源 需积分: 46 131 下载量 44 浏览量
2019-01-09
14:09:50
上传
评论 18
收藏 9KB ZIP 举报
温馨提示
包含多种多普勒中心估计的方法,Madsen相位增量法,适用于快速实时处理的算法以及其它算法的多普勒中心估计。matlab编写程序,无bug。
资源推荐
资源详情
资源评论
收起资源包目录
多普勒中心估计.zip (10个子文件)
多普勒中心估计
DopplerCenterEstimation_Eny.m 4KB
DopplerCenterEstimation_Min.m 837B
DopplerCenterEstimation_Ape.m 2KB
DopplerCenterEstimation_MID_jie.m 5KB
DopplerCenterEstimation_MID_throw.m 350B
DopplerCenterEstimation_MID.m 220B
DopplerCenterEstimation_lyp.m 3KB
Centroid_Madsen2.m 2KB
DopplerCenterEstimation_Max.m 833B
SCDE
Madsen.m 2KB
共 10 条
- 1
资源评论
- sinat_416303902019-01-27注释不够清楚
- hweojj2019-01-14还可以,支持。
流水终入海
- 粉丝: 191
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功