3D-FFT实测数据测距测速测角之算法处理

本文详细介绍了雷达信号处理中的3D-FFT算法,用于测距、测速和测角。首先,通过1D-FFT计算目标距离,接着使用2D-FFT结合多普勒效应测量目标速度,最后通过3D-FFT或数字波束形成(DBF)技术确定目标方位。代码示例展示了MATLAB中实现这些步骤的具体过程。
摘要由CSDN通过智能技术生成

前言:前两篇笔记已经介绍了波形参数和数据预处理两部分内容,接下来具体介绍3D-FFT的算法,包括如何测距,测速和测角。推荐一篇文章,写得很清楚明白还有详细的公式推导雷达原理 | 用MATLAB信号处理是如何解算目标的距离和速度信息的? - 知乎 (zhihu.com)

一、测距

1、原理:是根据雷达发射信号与目标反衍回来的被接收天线接收到的信号时间差,利用距离等于速度*时间计算出目标与雷达的距离。用雷达采集数据得到的数据已经是将发射信号与接收信号混频后的中频信号。做1D-FFT后得到频率峰值,对应的就是目标。

2、代码实现:

%测距,1D-FFT,只需要一个chirp的数据
range_win = hamming(n_samples);%加海明窗
range_profile = [];
temp = data_radar_range.*range_win'; %对每个采样点加窗
temp_fft = fft(temp,n_samples);%对该chirp做采样点个数的fft
range_profile = temp_fft;
range_profile(1,1:5)=0; %对下标1位置的数据置0
range_profile(1,45:49)=0;
%range_profile = abs(range_profile);
[max_range,index_max] = max(abs(range_profile));
freqbin = (index_max-1)*Fs/n_samples;
R = freqbin*c/(2*slope);

二、测速

1、原理:多普勒位移,对距离FFT的结果在chirp维作1D-FFT,得到距离-多普勒图。提取2D-FFT的峰值即可得到目标的差拍频率和多普勒频率。具体公式推导如下图,截取于前言里的文章。

 

2、代码实现:

%2D-FFT,需要一帧的数据,128个chirp
for i = 1:n_RX
    for j = 1:n_samples
       
            temp_3d_fft_speed = temp_3d_fft_range1(j,:,i).*(doppler_win)';
            %对1D-FFT的结果中每个chirp加窗
            temp_3d_fft_speed1(j,:,i) = fftshift(fft(temp_3d_fft_speed,n_chirps));
            %在chirp维度上做FFT,对128个chirp做一次FFT
     
    end
end
speed_profile = temp_3d_fft_speed1;
temp_3d_fft_speed1(:,63:65,:)=0;%将速度为0的分量置0

三、测角

1、3D-FFT测角

(1)原理: 对多个RX的2DFFT结果在天线维作1DFFT,得到距离-多普勒-方位图。

(2)代码实现:

%3D-FFT
for i = 1:n_samples
    for j = 1:n_chirps
        temp_3d_fft_angle(i,j,:) = fftshift(fft(temp_3d_fft_speed1(i,j,:),Q));
        %对2D-FFT结果在天线维度上做FFT,对每个接收天线的2D-FFT数据做一次FFT
    end
end

2、DBF测角

(1)原理:数字波束形成(Digital Beam Forming,DBF),主要是针对相控阵领域处理的。其中数字是指 通过数字信号处理方式对每一个天线阵元通道做相位补偿。做相位补偿的原因是有相位差,相位差是由天线阵元空间位置的差异导致每个阵元接收信号的波程差引起的。补偿的方式是通过加权处理。波束形成是指 对期望方向的信号做同相叠加,最大化该方向的接受增益。波束形成的方式是通过求和处理。

(2)代码实现

%DBF测角
theta=(-90:1:90)/180*pi;
for i=1:length(theta)
    W(:,i) = exp(1i*2*pi*d*sin(theta(i))/lambda*(antloc)'); %权系数
end
for i = 1:N
    for j = 1:M
        angle_profile (i,j,:)= (squeeze( speed_profile(i,j,:)))'*conj(W);
    end
end

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值