mmWave_1_D_Range_FFT_to_Stu
clear all
data=readDCA1000('matlab_lab_adc_data.bin');
%data=readDCA1000('adc_data.bin');
frame_cnt=size(data,2)/256/128 %frame_cnt 帧数,128个chirp 定义位一帧,一帧中有256个采样点
lightSpeed = 3.0e8; %光速
Sample_Rate_Hz = 10e6; %采样率,10MHZ
Slope_Hz = 29.982e12; %斜率29.982Mhz /us
Samples_Per_Chirp = 256;%采样点数256
fftSize1D = 256; %大概意思同采样点数
range_step = ((Sample_Rate_Hz/Samples_Per_Chirp)/Slope_Hz) *(lightSpeed/2) * Samples_Per_Chirp / fftSize1D;%简化一下 距离分辨率dres= c/2B
range_axis = (0:fftSize1D-1)*range_step; %每一个采样点对应的距离刻度
time_axis = (0:fftSize1D-1)/Sample_Rate_Hz;%每一个采样点对应时间刻度
for i =1:size(data,2)/256 %M个chrip
recv1_data(1:256,i)=data(1,(i-1)*256+1:i*256); %将第一个天线的数据,重新排列成按列排布的数据,256行*1024列。行代表256次采样,列代表1024个chirps
end
window_1D = hann(256);
radar_data_1dFFT = fft(recv1_data(:,1).*window_1D, fftSize1D); %天线1的第一个chirp 与汉宁窗口点乘后做fft
figure(1);clf %时间维度上,显示实部和虚部
plot(time_axis,real(recv1_data(:,1)),'b');
grid on
hold on
plot(time_axis,imag(recv1_data(:,1)),'r')
xlim([0 2.6e-5]);
xlabel('time (seconds)');ylabel('amplitude');
title('Time domain plot')
figure(2);clf %距离维度上,显示数据值,20log10,转换成分贝单位,abs()转成成模的形式,/2^22 可视化调整
plot(range_axis,20*log10(abs(radar_data_1dFFT)/2^22),'LineWidth',1.5);
grid on
xlim([0 49]);
ylim([-120 0]);
xlabel('Distance (meters)');ylabel('FFT Output(dBFS)');
title('1-D FFT amplitude profile(per chirp)')
Bandwidth = Slope_Hz * fftSize1D /Sample_Rate_Hz;
disp(Bandwidth)
range_resolution = range_step;
disp(range_resolution)
max_range= Sample_Rate_Hz*lightSpeed/2/Slope_Hz;
disp(max_range)
index = find(abs(radar_data_1dFFT)==max(abs(radar_data_1dFFT))); %检测最大强度距离
strength_max_dis = range_axis(index);
strength_data = abs(radar_data_1dFFT);
sorted_data = sort(abs(radar_data_1dFFT), 'descend'); %检测信号最大的10个距离
radar_data_1dFFT_top_10 = sorted_data(1:10);
indices = arrayfun(@(x) find(abs(radar_data_1dFFT) == x, 1), radar_data_1dFFT_top_10);
strength_max_top_10_dis = range_axis(indices);
strength_max_top_10_strength = strength_data(indices);
dent.m 解读