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

这篇具有很好参考价值的文章主要介绍了雷达信号处理算法:静态杂波滤除(附MATLAB代码和数据)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

1.零速通道置零法

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

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

毫米波雷达过滤算法,毫米波雷达基本原理,自动驾驶中的雷达处理算法,matlab,算法,开发语言,目标检测,自动驾驶
(图1 R-V谱矩阵(未经过静态杂波滤除))

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

毫米波雷达过滤算法,毫米波雷达基本原理,自动驾驶中的雷达处理算法,matlab,算法,开发语言,目标检测,自动驾驶
(图2 零速通道置零法)

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

2.动目标显示(MTI)

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

毫米波雷达过滤算法,毫米波雷达基本原理,自动驾驶中的雷达处理算法,matlab,算法,开发语言,目标检测,自动驾驶
(图 3 一次对消滤波器结构图)

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

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

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

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

毫米波雷达过滤算法,毫米波雷达基本原理,自动驾驶中的雷达处理算法,matlab,算法,开发语言,目标检测,自动驾驶
(图4 MTI一次对消效果)

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

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

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

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

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

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

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

毫米波雷达过滤算法,毫米波雷达基本原理,自动驾驶中的雷达处理算法,matlab,算法,开发语言,目标检测,自动驾驶
(图5 相量均值相消算法模型)

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

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

毫米波雷达过滤算法,毫米波雷达基本原理,自动驾驶中的雷达处理算法,matlab,算法,开发语言,目标检测,自动驾驶
(图6 相量均值相消算法效果)

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

毫米波雷达过滤算法,毫米波雷达基本原理,自动驾驶中的雷达处理算法,matlab,算法,开发语言,目标检测,自动驾驶
(图7 相量相消后并进行直流分量去除效果)

4.MATLAB代码

数据部分由于在文章中无法分享,因此本文所用到的MTALBA代码和数据下载:代码和数据

我是调皮哥,感谢阅读。

%% 作者:调皮连续波
%% 公众号:调皮的连续波
%% 时间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_Number
Rx_Number
Doppler_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_Number
2 %实部虚部
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_Number
Doppler_Number
Tx_Number
Rx_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); %这里只用虚拟天线的最后一组数据。原本数据大小应该是16
256
8=32768,现在只有16
256
1=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)😦(mm-1)4Range_Number+Range_Number)+(nn-1)*Range_Number );
ReIm_Data_all2(mm,:,nn) = ReIm_Data_All((nn-1)*Range_Number+131072/2+((mm-1)4Range_Number+1):131072/2+((mm-1)4Range_Number+Range_Number) +(nn-1)*Range_Number );
end
end
ReIm_Data_All = cat(3,ReIm_Data_all1(:,:,1:4), ReIm_Data_all2(:,:,1:4));
%% 1D FFT
fft1d= zeros(Doppler_Number,Range_Number,8);
for qq =1:8
for chirp_fft=1:Doppler_Number
fft1d(chirp_fft,:,qq) = fft((ReIm_Data_All(chirp_fft,:,qq)));
end
end
FFT1_mag=abs(fft1d(:,:,1));
figure(1);
mesh(FFT1_mag);
xlabel(‘采样点数’);ylabel(‘脉冲数’);zlabel(‘幅度’);
title(‘距离维FFT结果’);
%% MTI 动目标显示
fft1d_MTI= zeros(Range_Number,Doppler_Number,8);
for cc =1:8
for ii =1:Doppler_Number-1
fft1d_MTI (ii,:,cc) = fft1d(ii+1,:,cc)-fft1d(ii,:,cc);
end
end
%
%
% mesh(abs(ReIm_Data_All(:,:,1)));
%% 相量均值相消算法-静态杂波滤除
fft1d_avg = zeros(128,128,8);
for n=1:8
avg = sum(fft1d(:,:,n))/128;
for chirp=1:128
fft1d_avg(chirp,:,n) = fft1d(chirp,:,n)-avg;
end
end
% figure;
% mesh(X,Y,abs(fft1d_jingtai(:,:,1)));
% fft1d =fft1d_jingtai;
%%
%% 2D FFT
fft2d= zeros(Doppler_Number,Range_Number,8);
for kk=1:8
for chirp_fft=1:Range_Number
fft2d(:,chirp_fft,kk) =fftshift( fft((fft1d(:,chirp_fft,kk)))); %未经过静态杂波滤除
fft2d_MTI(:,chirp_fft,kk) =fftshift( fft((fft1d_MTI(:,chirp_fft,kk)))); %MTI
fft2d_avg(:,chirp_fft,kk) =fftshift( fft((fft1d_avg(:,chirp_fft,kk)))); %相量均值法
end
end
figure(2);
fft2d_0 =abs(fft2d(:,:,1));
mesh(X,Y,fft2d_0);
xlabel(‘距离维(m)’);ylabel(‘速度维(m/s)’);zlabel(‘幅度’);
title(‘R-V谱矩阵’);
figure(3);
fft2d_0 =abs(fft2d(:,:,1));
fft2d_0(63:65,:)=0;
mesh(X,Y,fft2d_0);
xlabel(‘距离维(m)’);ylabel(‘速度维(m/s)’);zlabel(‘幅度’);
title(‘零速通道直接置零法’);
figure(4);
mesh(X,Y,abs(fft2d_MTI(:,:,1)));
xlabel(‘距离维(m)’);ylabel(‘速度维(m/s)’);zlabel(‘幅度’);
title(‘MTI’);
figure(5);
mesh(X,Y,abs(fft2d_avg(:,:,1)));
xlabel(‘距离维(m)’);ylabel(‘速度维(m/s)’);zlabel(‘幅度’);
title(‘相量均值相消’);
%直流分量去除 相量均值相消算法-静态杂波滤除
figure(6)
fft2d_avg(:,1,1) =0;
mesh(X,Y,abs(fft2d_avg(:,:,1)));
xlabel(‘距离维(m)’);ylabel(‘速度维(m/s)’);zlabel(‘幅度’);
title(‘相量均值相消’);文章来源地址https://www.toymoban.com/news/detail-614458.html

到了这里,关于雷达信号处理算法:静态杂波滤除(附MATLAB代码和数据)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 现代信号处理实验:MATLAB实现LD算法进行AR估计

    利用给定的一组样本数据估计一个平稳随机信号的功率谱密度称为功率谱估计,又称谱估计。谱估计的方法可以分成经典谱估计和现代谱估计。 经典谱估计又称为非参数化的谱估计,分为直接法和间接法。直接法是指直接计算样本数据的傅里叶变换,即获取频谱,然后计算频

    2024年02月03日
    浏览(59)
  • 聊聊音频信号处理中一个不太起眼的算法-limiter

    本文对笔者关于音频信号处理中的 Limiter 的理解作以记录。如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。 由于工作上的需要,笔者花了一周左右的时间对 limiter (它属于动态范围控制器里面的一种算法,动态范围控制器包括 compressor, expander,

    2024年02月21日
    浏览(63)
  • 阵列信号处理_对比常规波束形成法(CBF)和Capon算法

    利用电磁波信号来获取目标或信源相对天线阵列的角度信息的方式,也称测向、波达方向估计(DOA)。主要应用于雷达、通信、电子对抗和侦察等领域。 发展 常规波束形成(CBF)。本质是时域傅里叶变换在空域直接应用,分辨力受限于瑞利限; Capon自适应波束形成(1969年)

    2024年02月03日
    浏览(51)
  • 基于FPGA的信号处理算法,FFT法相差检测verilog实现

    基于FPGA的信号处理算法,FFT法相差检测verilog实现 。 1.硬件平台:altera芯片 2.软件平台:Quartusii 13.1 Verilog 3.实现功能:检测两路正弦波的相位差 基于FPGA的信号处理算法,FFT法相差检测verilog实现 引言 在现代通信系统中,信号处理算法在实时性和精度方面面临着巨大的挑战。

    2024年04月16日
    浏览(60)
  • 宽带信号处理实现DOA估计(ISM算法、MUSIC、MVDR、CBF)

    功率谱:                              功率谱:                              功率谱:                                    由快拍信号 计算协方差矩阵 ,其中 ,为快拍长度;对上述的空间谱公式遍历各个角度,计算对应角度的导向

    2024年04月23日
    浏览(40)
  • 【Python 算法】信号处理通过陷波滤波器准确去除工频干扰

    对于一个信号来说通常汇入工频噪声往往是因为交流电产生的电泳,影响了我们信号采集导致信号上存在工频干扰。 那么matlab去除工频干扰可以通过陷波滤波器实现。 在python中通常使用scipy.signal实现信号的处理。 Scipy的信号处理模块(scipy.signal)来创建自定义的陷波滤波器

    2024年02月08日
    浏览(50)
  • 【老生谈算法】基于matlab时域频域处理的语音信号变声处理系统设计与算法原理(论文+程序源码+GUI图形用户界面)——变声算法

    大家好,今天给大家介绍基于matlab的语音信号变声处理系统设计与算法原理(论文+程序源码)。 运用matlab软件实现对声音的变声处理,利用离散付里叶变换进行频谱分析;设计数字滤波器组;通过时域和频域方法做出各种音效效果,实现变速(慢放、快放),变调(频谱左

    2024年02月04日
    浏览(62)
  • 【OTFS与信号处理:论文阅读2】基于OTFS调制的迭代信道估计与检测算法

    2023.3.3 最近在研究OTFS迭代信道估计与信号检测相关问题,最近精读了一篇论文,并针对论文中部分公式进行推导,故记录一下学习过程。 论文题目:Iterative Channel Estimationand Data Detection Algorithm For OTFS Modulation 论文地址: https://ieeexplore.ieee.org/document/9747191 论文来源:ICASSP 202

    2024年02月03日
    浏览(47)
  • 162基于matlab的多尺度和谱峭度算法对振动信号进行降噪处理

    基于matlab的多尺度和谱峭度算法对振动信号进行降噪处理,选择信号峭度最大的频段进行滤波,输出多尺度谱峭度及降噪结果。程序已调通,可直接运行。 162 matlab 信号处理 多尺度谱峭度 (xiaohongshu.com)

    2024年02月19日
    浏览(50)
  • 数字信号处理、语音信号处理、现代信号处理

    推荐他的博客: 手撕《数字信号处理》——通俗易懂的数字信号处理章节详解集合 手撕《语音信号处理》——通俗易懂的语音信号处理章节详解集合 手撕《现代信号处理》——通俗易懂的现代信号处理章节详解集合

    2024年02月08日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包