本文编辑:调皮哥的小助理

本期文章将介绍三种雷达信号处理常用的静态杂波滤方法的基本原理,分别是零速通道置零法、动目标显示(MTI)以及相量均值相消算法(平均相消算法),并分析了静态杂波的滤除效果,以及三种方法的优缺点和应用场景,最后提供了一个MATLAB程序和数据以供读者学习参考。

数据说明:本文所采用的数据为雷达采集室内人员目标运动的一帧数据,采用的硬件平台为IWR1642,其中数据是通过串口直接输出,由MATLAB接收并处理。相关的操作和下面的链接中的操作是近似的,只是本文仅对静态杂波滤除算法做分析。

调皮连续波:TI单芯片毫米波雷达xWR1642人员检测代码分析(5)——串口单帧数据采集代码详解

1.零速通道置零法

零速通道置零法,是指在2D-FFT(速度维FFT)后直接将R-V谱矩阵(RD图)速度通道中的零速通道或零速附近通道置零,此操作意味着静止目标或者低速目标会直接从R-V谱矩阵中消失。零速通道置零法操作简单,易于理解。

如图1所示,是未经过任何处理的R-V谱矩阵,其中室内人员目标在3.5米左右,速度为-0.317m/s,靠近雷达运动。


(图1 R-V谱矩阵(未经过静态杂波滤除))

图1中信号的直流分量幅值很高,目标的幅度被直流分量严重压制,在进行后续的CFAR处理之前最好能够将信号的直流分量去除,便于提高雷达的性能。图2所示是零通道置零法的效果,其中本程序对零速通道以及零速通道相邻的一个通道都置为零。零速通道置零法对目标的幅度没有发生改变,对直流分量有一定的抑制效果,但对目标的微多普勒信息有一定的损失。因此,采用这种最简单的方法需要考虑具体的应用场景。


(图2 零速通道置零法)

微多普勒信息,对于不同的雷达具有不同的作用。例如,对于室内人员检测雷达,则微多普勒信息就显得非常重要,因为人体目标是非刚体物体,其身体各个部分的运动会带来许多的微多普勒效应,因此保留这部分信息对于后续的信号处理或者数据处理都具有非常重要的意义。对于高速目标,如交通流量检测雷达,微多普勒信息就显得不那么重要 ,因为汽车运动的速度是非常快的。关于雷达微多普勒的效应,更多内容可以阅读Victor C. Chen的《雷达中的微多普勒效应》一书,需要本书可私信调皮哥。

2.动目标显示(MTI)

MTI是雷达工程师们熟稔于心的雷达信号处理算法,基本上没有不了解的。MTI是指利用杂波抑制滤波器来抑制杂波,提高雷达信号的信杂比,以利于运动目标检测的技术。由于杂波谱通常集中在直流分量和雷达重复频率的整数倍处,而 MTI 滤波器利用杂波与运动目标的多普勒频率的差异,使得滤波器的频率响应在直流和PRF脉冲重复频率的整数倍处具有较深的阻带, 而在其他频点的抑制较弱, 从而通过较深的“凹口”抑制静止目标和静物杂波。在实验中,通常采用两脉冲对消器,也称一次对消器,其滤波器结构如下图3所示。


(图 3 一次对消滤波器结构图)

一次对消器的时域表达式和传递函数如下:

y(n)=x(n)−x(n−1)y(n)=x(n)-x(n-1)y(n)=x(n)−x(n−1)
H(z)=1−z−1H(z)=1-z^{-1}H(z)=1−z−1

MTI的核心原理就是静止目标的相位不会发生变化,而运动目标的相位与静止目标不同,因此相邻两个脉冲做差会把相同的相位值减掉,留下的就是运动目标的相位,从而达到滤除静止目标的功能。

MTI的效果如图4所示,其中信号的直流分量部分得到了良好的抑制,但同时目标的幅值也受到了同样的影响,因为在一次对消过程中,相邻的脉冲相减其实除了相位得到了消除,还有“复数绝对值”的削弱。另外,MTI由于仅对零速通道附近的信号“陷波”,而对于高速通道保持不变,因此得到图4的结果中背景噪声显得非常杂乱。


(图4 MTI一次对消效果)

3.相量均值相消算法(平均相消算法)

相量均值相消算法,也被称为平均相消算法,其实现的原理为:静止目标到雷达天线的距离是不变的,每一束接收脉冲上静止目标的时延也是不变的,对所有接收脉冲求平均就可以得到参考的接收脉冲,然后用每一束接收脉冲减去参考接收脉冲就可以得到目标回波信号,核心思想是求均值做差。

其实现的过程为:首先对所有接收脉冲求平均得出参考接收脉冲,接着利用每一束接收脉冲减去参考接收脉冲就可以得到目标回波信号,参考接收脉冲的表达式为:

C[m]=1N∑i=1NR[m,i]C[m]=\frac{1}{N} \sum_{i=1}^N R[m, i]C[m]=N1​∑i=1N​R[m,i]

其中,m为快时间维(距离维)采样点,i为慢时间维(速度维)时间采样点,相量均值相消算法的公式为:​

R[m, n]=R[m, n]-C[m]。

相量均值相消的算法原理模型如图5所示,倘若目标为静止目标,则chirp回波信号的相位相同,相量求和后累加得到的均值会很大,如(n1+n2+n3)/3\left(n_1+n_2+n_3\right) / 3(n1​+n2​+n3​)/3 ,则每个chirp信号减完均值之后信号幅度变得非常小。假设目标是运动目标或者微动目标,由于目标运动会导致每个调频脉冲信号间的相位不同,其相量求和累加后会出现抵消,则其均值会很小,如 (m1+m2+m3)/3\left(m_1+m_2+m_3\right) / 3(m1​+m2​+m3​)/3 ,每个chirp信号减完均值后幅值影响不大。因此,运动或微动的目标就会在速度维傅里叶变换后变得“突出”。


(图5 相量均值相消算法模型)

综上所述,MTI和相量均值相消算法两种算法在原理的核心思想上有些许近似,最大的区别为:MTI是直接利用相位的差值消除静态杂波,而相量均值相消算法是通过相量叠加再求平均然后做差,去除静态杂波。因此MTI仅仅是抑制了静态目标的相位,对于微动目标不友好。而相量均值相消算法则通过求均值,在抑制静止目标相位的同时极大提高了动目标或者微动目标的信噪比。

如图6所示,是相量均值相消算法的效果,信号的直流分量得到了一定程度的抑制,但整体抑制效果没有MTI那么明显。相量均值相消算法最优的特点是对目标的幅度没有削弱作用,但其背景噪声比较干净,同时对微多普勒的信息保留的比较完整,完全让目标保持了较高的信噪比。


(图6 相量均值相消算法效果)

对于人员目标的检测,建议采用这种算法。如图7所示,是相量均值相消算法并去除了直流分量后的效果,基本上可以达到非常理想的效果。


(图7 相量相消后并进行直流分量去除效果)

4.MATLAB代码

数据部分由于在文章中无法分享,因此本文所用到的MTALBA代码和数据,可关注公众号:调皮的连续波,回复"0414"获得。

我是调皮哥,感谢阅读。

%% 作者:调皮连续波
%% 公众号:调皮的连续波
%% 时间2022年04月
%%
clc;
close all;
clear all;
%% 雷达参数
Tx_Number = 2; %发射天线
Rx_Number = 4; %接收天线
Range_Number = 128; %距离点数(每个chirp 128个点)
Doppler_Number = 128; %多普勒通道数
global Params;
Params.NChirp = Doppler_Number; %1帧数据的chirp个数
Params.NChan = Rx_Number; %RxAn数,ADC通道数
Params.NSample = Range_Number; %每个chirp ADC采样数
Params.Fs = 2.5e6; %采样频率
Params.c = 3.0e8; %光速
Params.startFreq = 77e9; %起始频率
Params.freqSlope = 60e12; %chirp的斜率
Params.bandwidth = 3.072e9; %真实带宽
Params.lambda=Params.c/Params.startFreq; %雷达信号波长
Params.Tc = 144e-6; %chirp周期
global FFT2_mag;
%% 坐标计算
[X,Y] = meshgrid(Params.c*(0:Params.NSample-1)Params.Fs/2/Params.freqSlope/Params.NSample, …
(-Params.NChirp/2:Params.NChirp/2 - 1)
Params.lambda/Params.Tc/Params.NChirp/2);
adc_data =load(‘angle_15.mat’);
Data_dec=(adc_data.prompt_1); %将16进制转换为10进制
%% 数据读取、拆分、组合
Data_zuhe=zeros(1,Tx_NumberRx_NumberDoppler_NumberRange_Number2); %建立计算存储数据的空矩阵
for i=1:1:Tx_NumberRx_NumberDoppler_NumberRange_Number2
Data_zuhe(i) = Data_dec((i-1)2+1)+Data_dec((i-1)2+2)256;%两个字节组成一个数,第二个字节乘以256相当于左移8位。
if(Data_zuhe(i)>32767)
Data_zuhe(i) = Data_zuhe(i) - 65536; %限制幅度
end
end
%% 分放数据
ADC_Data=zeros(Tx_Number,Doppler_Number,Rx_Number,Range_Number
2); %建立计算存储数据的空矩阵
for t=1:1:Tx_Number
for i=1:1:Doppler_Number
for j=1:1:Rx_Number
for k=1:1:Range_Number2 %实部虚部
ADC_Data(t,i,j,k) = Data_zuhe(1,(((t-1)Doppler_Number+(i-1))Rx_Number+(j-1))Range_Number2+k);%时域数据排列顺序为 TX1 TX2
end
end
end
end
%% 打印全部的实虚数据
Re_Data_All=zeros(1,Range_NumberDoppler_NumberTx_NumberRx_Number); %建立计算存储数据的空矩阵
Im_Data_All=zeros(1,Range_NumberDoppler_NumberTx_NumberRx_Number); %建立计算存储数据的空矩阵
% 虚部实部分解
for i=1:1:Tx_Number
Rx_NumberDoppler_NumberRange_Number
Im_Data_All(1,i) = Data_zuhe(1,(i-1)2+1);
Re_Data_All(1,i) = Data_zuhe(1,(i-1)
2+2);
end
% 原始信号实部、虚部图形绘制
% figure()
% subplot(2,1,1);
% plot(Im_Data_All(1,1:3000));title(‘实部波形’);
% xlabel(‘采样点数’);
% ylabel(‘幅度’);
% subplot(2,1,2);
% plot(Re_Data_All(1,1:3000),‘r’);title(‘虚部波形’);
% xlabel(‘采样点数’);
% ylabel(‘幅度’);
%% 打印分组后的实虚数据 数据结构为:2T4R在TX2组的16个脉冲数据
Re_Data=zeros(Doppler_Number,Range_Number); %建立计算存储数据的空矩阵
Im_Data=zeros(Doppler_Number,Range_Number); %建立计算存储数据的空矩阵
for chirp=1:Doppler_Number %查看所在chirp的数据
for j=1:1:Tx_Number
for k=1:1:Rx_Number
for i=1:1:Range_Number
Re_Data(chirp,i) = ADC_Data(j,chirp,k,(i-1)2+2);
Im_Data(chirp,i) = ADC_Data(j,chirp,k,(i-1)
2+1);
end
end
end
end
%% 虚部+实部数据重组得到复信号
ReIm_Data = complex(Re_Data,Im_Data); %这里只用虚拟天线的最后一组数据。原本数据大小应该是162568=32768,现在只有162561=4096。
ReIm_Data_All =complex(Re_Data_All,Im_Data_All);
ReIm_Data_all1 = zeros(Range_Number,Doppler_Number,4);
ReIm_Data_all2 = zeros(Range_Number,Doppler_Number,4);
%% 虚拟阵列重组 4通道->8通道
for nn=1:4
for mm=1:Range_Number
ReIm_Data_all1(mm,:,nn) = ReIm_Data_All((nn-1)*Range_Number+ ((mm-1)4Range_Number+1)

雷达信号处理算法:静态杂波滤除(附MATLAB代码和数据)相关推荐

  1. 鲸鱼算法优化PID参数优化附matlab代码

    第一 章  鲸鱼优化算法 算法介绍参考文献:Seyedali Mirjalili,Andrew Lewis. The Whale Optimization Algorithm[J]. Advances ...

  2. 智能优化算法-菲克定律算法Fick‘s Law Algorithm(附Matlab代码)

    引言 菲克定律算法Fick's Law Algorithm是一种新的基于物理的元启发式算法,称为菲克定律优化(FLA),其中利用了菲克第一扩散规则.于2022年发表在SCI 一区Knowledge-B ...

  3. 【图像增强】基于萤火虫算法实现图像对比度增强附matlab代码

    1 内容介绍 由于图像本身的复杂性和数据量大,传统的图像处理和分析技术常存在计算复杂度高的问题,因此基于进化算法的图像处理方法得到广泛研究和关注.萤火虫算法(Firefly Algorithm,FA) ...

  4. 【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码

    1 内容介绍 一种基于麻雀搜索算法优化极限学习机的风电功率预测方法,具体包括如下步骤:步骤1,确定影响风电功率的主导影响因子:步骤2,构建麻雀搜索算法优化核极限学习机预测模型,通过该模型对风电功率进行 ...

  5. matlab制作强光效果代码,自己动手做一个雷达PPI显示器的动态效果图(附Matlab代码)...

    关于雷达显示器,我们听说过A显.B显,PPI等,我们之前也分享过IEEE标准中对雷达显示器的定义,点此查看< 雷达定义的IEEE标准:"雷达显示器"种类>. 雷达显示器 ...

  6. 【优化求解】基于蝗虫算法求解单目标问题附matlab代码

    1 简介 蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法.具体原理如下: 2 ...

  7. 【图像分割】基于麻雀算法优化Kmeans实现图像分割附Matlab代码

    1 内容介绍 提出一种基于K-Means聚类的麻雀算法,该算法利用麻雀算法鲁棒性较强且不易陷入局部最优值的特点,动态的确定了聚类的数目和中心,解决了K-Means聚类初始点选择不稳定的缺陷,在此两种算 ...

  8. 【图像检测】基于AC算法实现图像显著性检测附matlab代码

    1 简介 AC算法也是Achanta等提出的,与FT算法类似,只是在求欧式距离时使用的均值不再是整幅图像的均值,而是选取不同大小邻域内的均值(三种大小)分别求取欧式距离,再相加得到. 2 部分代码 ​ ...

  9. 【樽海鞘算法】基于樽海鞘算法求解单目标问题附matlab代码(Salp Swarm Algorithm,SSA)

    1 简介 2 部分代码 %_________________________________________________________________________________% Salp ...

最新文章

  1. 常用的meta标签总结
  2. 用Axis创建的Webservice的集成与发布
  3. c++tcp接收文件缓存多大合适_网易面经:深剖TCP协议的流量控制和拥塞控制,你懂了吗?...
  4. 计算机辅助外文文献,计算机辅助夹具设计外文文献.pdf
  5. Linux下Makefile的automake生成全攻略
  6. 30.课时30.【Django模板】autoescape标签使用详解(Av61533158,P30)
  7. Python中变量判断
  8. JAVA day27,28 线程池
  9. Delphi版 ArcEngine Mapcontrol与PageControl同步
  10. 计算机操作系统|汤小丹|第四版|习题答案(三)
  11. TortoiseHg 学习笔记
  12. VMware ESXi 与ESX 产品之比较
  13. 个人中心(修改密码)
  14. TestFlight上架流程
  15. React中文文档之Lifting State Up
  16. “新基建”视野下的零售革新:从“模式”面子到“数字化”里子
  17. 学习游戏软件开发需要哪些基础知识
  18. React使用西瓜播放器
  19. ClickHouse 分布式表创建细节
  20. 中国石油大学《化工过程设备设计》第三阶段在线作业

热门文章

  1. 怎么用ALOAM跑kitti数据集的bag包
  2. DB2错误信息SQLCODE SQLSTATE (按sqlcode排序)
  3. 东莞市电子计算机学校,东莞市电子科技学校
  4. SqlServer 查看表结构
  5. ZJ-6型压电测试仪(准静态d33/d31(+d15)测量仪)
  6. visio2013安装之后,未经授权解决方案
  7. 磺酸基-Cy7 叠氮化物 DIPEA(二异丙基乙基胺)盐,Sulfo-Cy7 azide DIPEA (diisopropylethylamine) salt
  8. 2011年7月编程语言排行榜,Objective-C将成为年度语言
  9. 如何才能成为一名优秀的软件开发者
  10. 6/27到7/3日学习计划