% function dechirp
clc;clear all;close all;
j=sqrt(-1);
%Radar parameters
B=4e8; %线性调频带宽
T=25.6e-6; %发射脉冲时宽
fs=10e6; %匹配滤波数字化采样率
K=B/T; %调频率
fc=5.52e9; %载频
c=3e8; %光速
Nt=512; %距离采样点数
t0=-T/2:1/fs:T/2-1/fs; %发射信号持续时间
N=length(t0); %发射信号长度
S0=exp(j*2*pi*fc*t0+j*pi*K*t0.^2);%发射信号
xy=[-5,-2;0,5;6,-7];%采样点坐标; xy(1)=-5 xy(2)=0 xy(3)=6
rcs=[1,2,5]; %散射强度
Q=length(rcs);
rxy=[-35000,0]; %雷达坐标
Rref=35000; % 参考点(0 0)
for i=1:Q % xy(1)-rxy=[34995,-5]
Rptr(i)=norm(xy(i)-rxy); %各散射点到雷达的距离; norm(A)返回A的2范数
Rdelta(i)=Rptr(i)-Rref; %各散射点到参考点的距离
end
%建立变量数组
Si=zeros(1,Nt); %%回波信号
Sif=zeros(1,Nt); %%频域回波信号
Srf=zeros(Q,Nt); %%各散射点差频域回波信号
Sr=zeros(Q,Nt); %%各散射点差频时域回波信号
tp=-T/2+2*min(Rptr)/c:1/fs:T/2+2*max(Rptr)/c-1/fs; %% 采样总长度的时间
Sc=zeros(Q,Nt); %%去RVP和包络斜置的补偿函数
Srfc=zeros(Q,Nt); %%补偿后各回波信号
b=zeros(1,Nt);
d=zeros(1,Nt);
fit=zeros(1,Nt); %%补偿频率坐标
for i=1:Nt;
fit(i)=fs*i/Nt; %%离散域对应补偿频率(序列位移前)
end
for i=1:Q;
ti=-T/2+2*Rptr(i)/c:1/fs:T/2+2*Rptr(i)/c-1/fs; %快时间
delay(i)=floor(2*(Rptr(i)-min(Rptr))/c*fs)+length(tp)/2; %%信号延迟
Sr(i,delay+1:N+delay)=rcs(i)*exp(-j*4*pi*K/c*(fc/K+ti-2*Rref/c)*Rdelta(i)+j*4*pi*K/c/c*Rdelta(i)^2);%各散射点差频时域回波信号
Srf(i,:)=fft(Sr(i,:)); %
[b,d]=sort(Srf(i,:)); %其中d是一个大小等于size(Srf)的数组,其每一列是Srf中列向量的元素相对应的置换位置记号。
fi(i)=fit(d(Nt));
Sc(i,:)=exp(-j*pi*fi(i)^2/K); %补偿因子
Srfc(i,:)=Srf(i,:).*Sc(i,:); %%去斜并消除RVP项
Sif=Sif+Srfc(i,:);
end
fit=zeros(1,Nt); %%初始化补偿频率坐标
for i=1:Nt;
fit(i)=(fs*i-fs*(Nt/2+1))/Nt; %%离散域对应补偿频率
end
%归一化,中心搬移
Si=ifft(Sif);
Sif=abs(Sif);
Sif=Sif/max(Sif);
Sif=[Sif(Nt/2+1:Nt),Sif(1:Nt/2)];
Ri=-fit*c/K/2; %%抽样点相对于参考点的距离
figure,plot(Ri,Sif);
grid, xlabel('与参考点之间的距离 Rdelta /m'),ylabel('|S(f)|'),title('未经hamming窗的输出'); %%匹配滤波输出图
win=hamming(Nt); %%hamming窗
Sfh=fft(Si.*win'); %%回波经过hamming窗
Sfh=abs(Sfh);
Sfh=Sfh/max(Sfh);
Sfh=[Sfh(Nt/2+1:Nt),Sfh(1:Nt/2)]; %%归一化幅度匹配滤波输出
figure,plot(Ri,Sfh);
grid,xlabel('与参考点之间的距离 Rdelta /m'),ylabel('|S(f)| db'),title('经过hamming窗后的输出');
figure,plot(Ri,20*log10(Sif));
grid,xlabel('与参考点之间的距离 Rdelta /m'),ylabel('|S(f)| db'),title('匹配滤波输出比较');
%xlim([-10,10]);
hold on
plot(Ri,20*log10(Sfh),'k');
legend('未加窗','加窗'); %增加注解
评论6