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