📄 zcfar.m
字号:
%雷达的恒虚警处理(CFAR)
%%%%%%%%产生瑞利噪声%%%%%%%%
sigma=2; %瑞利分布参数
t=1e-3; %杂波时间长度
fs=1e6; %采样率
ts=1/fs;
t1=0.05e-3:1/fs:0.2e-3-1/fs;
n=length(t1);
rand('state',0); %将伪随机发生器置为0状态
u=rand(1,n);
rayleigh_noise=sqrt(2*log2(1./u))*sigma; %产生瑞利杂波
%%%%%%%%%产生目标回波%%%%%%%%%
N=t/ts;
s_pc_1=[zeros(1,100),1,zeros(1,N-101)]; %点目标回波
noise=rand(1,N);
rayleigh_clutter=[zeros(1,50),rayleigh_noise,zeros(1,N-200)]; %产生叠加了瑞利杂波、热噪声的点目标回波
s_pc=s_pc_1+0.1*rayleigh_clutter+0.1*noise;
figure,plot((0:ts:t-ts),s_pc),
xlabel('t(单位:S)'),title('叠加了瑞利分布杂波、热噪声的目标回波');
%%%%%%%%%%慢门限恒虚警处理%%%%%%%%%
cfar_result=zeros(1,N);
cfar_result(1,1)=s_pc(1,1);
for i=2:N
cfar_result(i)=s_pc(1,i)/mean(s_pc(1,1:i));
end
figure,plot((0:ts:t-ts),cfar_result),
xlabel('t(单位:S)'),title('采用慢门限恒虚警处理结果');
%%%%%%%%%快门限恒虚警处理%%%%%%%%%
cfar_result=zeros(1,N); %
cfar_result(1,1)=s_pc(1,1)/(sqrt(2)/pi*mean(s_pc(1,2:17))); %第一个恒虚警处理时噪声均值由其后面的16点的噪声决定
for i=2:16 %第2点到第16点的均值由其前面和后面16点的噪声共同决定
noise_mean=sqrt(2)/pi*(mean(s_pc(1,1:i-1))+mean(s_pc(1,i+1:i+16)))/2;
cfar_result(1,i)=s_pc(1,i)/noise_mean;
end
for i=17:N-17 %正常的数据点的噪声均值由其前面和后面各16点噪声中的大者决定
noise_mean=sqrt(2)/pi*max(mean(s_pc(1,i-16:i-1)),mean(s_pc(1,i+1:i+16)));
cfar_result(1,i)=s_pc(1,i)/noise_mean;
end
for k=N-16:N-1 %倒数第16点到倒数第2点的噪声均值由其前面16点和后面的噪声共同决定
noise_mean=sqrt(2)/pi*(mean(s_pc(1,k-16:k-1))+mean(s_pc(1,k+1:N)))/2;
cfar_result(1,k)=s_pc(1,k)/noise_mean;
end
%最后一点的噪声均值由其前面16点的噪声决定
cfar_result(1,N)=s_pc(1,N)/(sqrt(2)/pi*mean(s_pc(1,N-16:N-1)));
figure,plot((0:ts:t-ts),cfar_result),
xlabel('t(单位:S)'),title('采用快门限恒虚警处理结果');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -