目录
本篇文章主要讲解xWr1xx+DCA1000采集的原始数据如何进行距离FFT,以及如何通过CFAR(恒虚警)技术检测的存在。这里所用的恒虚警采用最简单的CA-CFAR均值类恒虚警算法。在这里将给出恒虚+1DFFT的matlab程序。在这里不重复CFAR的理论知识部分,望各位如果需要了解有关CFAR的基础知识可以借鉴
一、数据采集参数
mmwave studio 参数配置如下(采集原始数据配置):
在这里我配置的chirp数是每帧128个chirp;每个chirp采样点为256个采样点;具体配置如下图所示;
二、CFAR+1DFFT matlab源码
%% Author : Poulen
%% Data : 2022.3.10
%%原始数据的距离FFT
clear
close all
clc;
FrequencySlope=30e12;%%调频斜率
SampleRate=10e6;%%采样率
adcdata=readDCA1000_1('adc_data_slowWalk_375_15s_1.bin');%%读取预先采集的数据
RX0= reshape(adcdata(1,:),256,[]);%%取一个接收天线的数据
han_win=hanning(256);%%加汉明窗,防止频谱泄露
%%分别对每一个Chirp做FFT
temp=RX0(:,1).*han_win;
temp_profile = squeeze(fft(temp,256));
%%绘图
%%%%%%%%%%%%%%%%%%%%%%%%CA_CFAR%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=8;%%训练单元
G=2;%%保护单元
pfa=10.^-3;%%虚警概率
win_length=N+1+G;%窗长
pre_step_len=1;%步长
win_num=floor((256-win_length)/pre_step_len)+1;
Z=zeros(win_num,1);
%%估算背景噪声功率
for n=1:win_num
for k=1:win_length
Z(n)=Z(n)+temp_profile((n-1)*pre_step_len+k);
end
Z(n)=Z(n)-temp_profile((n-1)*pre_step_len+N/2-1)-temp_profile((n-1)*pre_step_len+N/2+1)-temp_profile((n-1)*pre_step_len+N/2+2);
Z(n)=Z(n)./N;
end
T=(pfa.^(-1/N)-1).*N;%%门限因子
S=T.*Z;%%门限
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
X1=(0:255)*SampleRate*3e8/256/2/FrequencySlope;%距离公式%%
X2=((N+G)/2:255-(N+G)/2)*SampleRate*3e8/256/2/FrequencySlope;%%门限起始值
plot(X1,abs(temp_profile));
hold on;
plot(X2,abs(S));
xlabel('距离(m)');
ylabel('信号幅值');
title('一维FFT处理三维视图');
legend('FFT','阈值');
对与上述matlab程序中,数据来源我随机采集的数据,关于程序相关说明已有注释。值得说明的是,我在上述程序中调用了一个自己编写的函数,该函数源码我已在我另一篇文章中提过点击这里
三、程序运行结果
这组数据我是在很多物件的室内随意测得,各位看官老爷也可以自己尝试。最后,如果需要转载请注明出处。关于毫米波2DFFT(测速)、3DFFT(测角)这里就不提出,如果想要学习可关注,应要求后续出一个专门讲解2DFFT、3DFFT的文章。