一、简介
利用MATLAB设计经典的雷达数字信号处理。该系统具备对雷达目标回波的处理能力,能够从噪声中将目标检测出来,并提取目标的距离、速度、角度信息。教程分五节完成,主要包括:
第一节,雷达LFM信号分析;
第二节,脉冲压缩处理;
第三节,相参积累处理;
第四节,恒虚警CFAR处理;
第五节,目标信息提取处理。
1.雷达LFM信号分析
脉冲压缩雷达最常见的调制信号是线性调频(Linear Frequency Modulation)信号,接收时采用匹配滤波器(Matched Filter)压缩脉冲。脉冲压缩雷达能同时提高雷达的作用距离和距离分辨率。这种*采用宽脉冲发射以提高发射的平均功率,保证足够大的作用距离;而接受时采用相应的脉冲压缩算法获得窄脉冲,以提高距离分辨率,较好的解决雷达作用距离与距离分辨率之间的矛盾。
LFM信号的数学表达式为:
2.脉冲压缩处理
脉冲压缩指雷达在发射时采用宽脉冲信号,接收和处理回波后输出窄脉冲。脉冲压缩技术是匹配滤波理论和相关接收理论的一个很好的实际应用。很好地解决了这样的一个问题:在发射端发射大时宽、带宽信号,以提高信号的发射能量,而在接收端,将宽脉冲信号压缩为窄脉冲,以提高雷达对目标的距离分辨精度和距离分辨力。该技术解决了雷达远距离探测与高精度测距性能不可兼顾的问题,是现代雷达中不可缺少的关键技术。
脉冲压缩的DSP处理方法有时域相关或频域相乘。对于点数较多的回波信号,采用频域相乘方法可以获得较快的运算速度。频域脉冲压缩的原图如下图所示。
DSP对采样后的数据进行FFT变换,变换至频域后,与其匹配滤波器频率数据进行复数相乘,相乘后,再与复数补偿因子进行相乘解决脉冲间距离走动问题,最后将结果做IFFT,重新变换回时域。其中,FFT点数、复数相乘点数、IFFT点数均为1024点。
信号的匹配滤波器的时域脉冲响应为:
3.相参积累处理
在信号理论中,相参又称为相干,定义为脉冲之间存在确定的相位关系。简单来说,脉冲间的相位可以互相对照,知道其中一个相位就有办法知道另外一个。相参处理的意义在于脉冲积累时提高信噪比,提高多普勒频率的准确度。由于雷达回波信号不但有微弱的信号,还会有很强的噪声。雷达的主要目的就是要把微弱的目标信号从噪声中分离出来,设法提高信噪比。要想把信号提取出来,必须要将信号放大,但放大的同时噪声也被放大,因为它们总是同时存在的,并且放大电路自己本身也有噪声,放大后信号与噪声的比值反而变小了,更不利于提取有用的回波信号。解决的方法是进行相参积累,可以对n个回波进行累加,由于噪声是随机的,累加的结果是信号变强,而噪声因是随机的,强度反而变小,这样信号与噪声比就提高了。相参积累中多个脉冲之间相位关系固定且明确,所以理论上积累后信噪比可提高到n倍。
下图为相参积累原理示意图:
4.恒虚警CFAR处理
恒虚警率CFAR是ConstantFalse-AlarmRate的缩写。在雷达信号检测中,当外界干扰强度变化时,雷达能自动调整其灵敏度,使雷达的虚警概率保持不变,这种特性称为恒虚警率特性。恒虚警率检测是雷达目标自动检测的一个重要组成部分,作为从雷达中提取目标的第一步,是进一步识别目标的基础。虚警率是指侦察设备在单位时间内将噪声或其他干扰信号误判为威胁辐射源信号的概率。而恒虚警率检测则证明了检测算法的稳定性和可靠性。
雷达信号恒虚警率检测就是要求虚警概率保持恒定,这主要是因为在雷达信号检测中,信号的最佳检测通常采用奈曼-皮尔逊准则,即在保持恒定的虚警概率的条件下,使正确检测的概率达到最大值。
精细的恒虚警检测。
5.目标信息提取处理
本文介绍的雷达系统采用单脉冲*,具备精密跟踪的能力。每发射一个脉冲,天线能同时形成若干个波束,将各波束回波信号的振幅和相位进行比较,当目标位于天线轴线上时,各波束回波信号的振幅和相位相等,信号差为零;当目标不在天线轴线上时,各波束回波信号的振幅和相位不等,产生信号差,驱动天线转向目标直至天线轴线对准目标,这样可测出目标的方位角与俯仰角。从各波束接收的信号之和,可测出目标的距离,从而实现对目标的测量和跟踪功能。单脉冲雷达已经广泛应用,在军事上主要用于目标识别、靶场精密跟踪测量、导弹预警和跟踪、导弹再入弹道测量、火箭和卫星跟踪、武器火力控制、炮位侦查、地形跟随、导航、地图测绘等,在民用上主要用于交通管制。
单脉冲自动测角属于同时波瓣测角法,在一个角平面内,两个相同的波束部分重叠,交叠方向即为等信号轴的方向。将这两个波束接收到的回波信号进行比较,就可取得目标在这个平面上的角误差信号,然后将此误差电压放大变换后加到驱动电动机控制天线向减小误差的方向运动。因为两个波束同时接收到回波,故单脉冲测角获得目标角误差信息的时间可以很短,理论上只要分析一个回波脉冲就可以确定角误差,所以叫“单脉冲”。这种方法可以获得很高的测角精度,故精密跟踪雷达通常采用它。
由于取出角度误差信号的具体方法不同,单脉冲雷达的种类很多,应用最广的是振幅和差式单脉冲雷达,该方法的实质实际上是利用两个偏置天线方向图的和差波束。
二、源代码
%% 线性调频信号的产生
clc;close all;clear all;
T = 10e-6; %脉宽
B = 25e6; %信号带宽
K = B/T; %调频斜率
Fs = 2*B;Ts = 1/Fs; %采样频率及采样间隔
N = T/Ts;
t = linspace(-T/2,T/2,N);
St = exp(j*pi*K*t.^2); %生成线性调频信号
figure;
subplot(211)
plot(t*1e6,St);
xlabel('Time in u sec');
title('线性调频信号');
grid on;axis tight;
subplot(212)
freq = linspace(-Fs/2,Fs/2,N);
plot(freq*1e-6,fftshift(abs(fft(St))));
xlabel('Frequency in MHz');
title('线性调频信号的幅频特性');
grid on;axis tight;
%% CFAR
% 先运行 processCoherent.m文件
%%
%%%%%%%%%二维筛选%%%%%%%%%
N_ref_2D = M/4; %参考区域大小
PC_data_ifft_CA_abs = abs(PC_data_ifft_CA);
N_point = length(PC_data_ifft_CA_abs);
%计算区域1的和
sum1 = sum(PC_data_ifft_CA_abs(1:N_ref_2D,1:N_ref_2D)); %按行相加
sum_ref_2D(1,1) = sum(sum1(1,:)); %按列相加
%计算区域2的和
sum2 = sum(PC_data_ifft_CA_abs(1:N_ref_2D,(N_point-N_ref_2D+1):N_point));
sum_ref_2D(1,2) = sum(sum2(1,:));
%计算区域3的和
sum3 = sum(PC_data_ifft_CA_abs((M-N_ref_2D+1):M,1:N_ref_2D));
sum_ref_2D(1,3) = sum(sum3(1,:));
%计算区域4的和
sum4 = sum(PC_data_ifft_CA_abs((M-N_ref_2D+1):M,(N_point-N_ref_2D+1):N_point));
sum_ref_2D(1,4) = sum(sum4(1,:));
%%%产生门限Threshold%%%
SNR_Threshold = 15; % 检测门限 dB
Threshold = ((sum(sum_ref_2D(:,1:4)) - max(sum_ref_2D))/(N_ref_2D^2*3))*10^(SNR_Threshold/10);
%%%寻找 PC_data_ifft_CA 中大于门限的点并记录其位置%%%
location = zeros(M,N_point); %填1表示该点大于门限
for i=1:1:M
for j=1:1:N_point
if(PC_data_ifft_CA_abs(i,j) >= (1*Threshold))
location(i,j) = 1;
else
location(i,j) = 0;
end
end
end
% figure(4),mesh(location),title('二维筛选后的结果/location');axis tight;
%%%筛选结果显示%%%
selected = zeros(M,N_point);
for i=1:1:M
for j=1:1:N_point
if(location(i,j) == 1)
selected(i,j) = PC_data_ifft_CA_abs(i,j);
else
selected(i,j) = 0;
end
end
end
figure(5),mesh(t_x_ca_cut,f_x_ca,selected),title('二维CFAR后的结果(信号1的SNR=-5,信号2的SNR=2)/selected');axis tight;
xlabel('时间/s','FontSize',12);ylabel('频率/Hz','FontSize',12);zlabel('检测结果(尖峰处为目标)','FontSize',12);
%%%%%%%%%%二维筛选结束%%%%%%%%%%%
%%%%%%%%%%一维筛选%%%%%%%%%%
%%%%距离维筛选%%%%
N_prot_R = 30; %保护单元覆盖第二旁瓣,次大点与次次大点
N_ref_R = 135; %参考单元
threshold_R = zeros(M,N_point); %记录距离维每个观察点的门限值
for i=1:1:M
for j=1:1:N_point
if(location(i,j) == 1) %只筛选经过二维筛选之后的点
if(j <= (N_prot_R + N_ref_R) ) %观察点过于偏左,左侧点数不足
threshold_R(i,j) = (sum(PC_data_ifft_CA_abs(i,(j+N_prot_R+1):(j+N_prot_R+N_ref_R))))/N_ref_R; %观察点右侧参考点相加求平均
elseif( j >= (N_point - N_prot_R - N_ref_R + 1)) %观察点过于偏右,右侧点数不足
threshold_R(i,j) = (sum(PC_data_ifft_CA_abs(i,(j-N_prot_R-N_ref_R):(j-N_prot_R-1))))/N_ref_R; %观察点左侧参考点求平均
else %观察点居中,左右点数均足够
sum_R_left = sum(PC_data_ifft_CA_abs(i,(j-N_prot_R-N_ref_R):(j-N_prot_R-1)));
sum_R_right = sum(PC_data_ifft_CA_abs(i,(j+N_prot_R+1):(j+N_prot_R+N_ref_R)));
threshold_R(i,j) = max(sum_R_left,sum_R_right)/(N_ref_R); %观察点两侧取大的一侧求均值
end
else
threshold_R(i,j) = 0;
end
end
end
%利用距离维门限进行一维筛选
location_R = zeros(M,N_point);
for i=1:1:M
for j=1:1:N_point
if(location(i,j) == 1) %只筛选经过二维筛选之后的点
if(PC_data_ifft_CA_abs(i,j) >= (1*threshold_R(i,j)))
location_R(i,j) = 1;
else
location_R(i,j) = 0;
end
else
location_R(i,j) = 0;
end
end
end
完整代码或者代写添加QQ1575304183
往期回顾>>>>>>