雷达测距(range fft)实验:
本次实验主要是依据下述的公式进行的:
f = S ∗ τ = S ∗ 2 R c f = S * \tau = \frac{ S * 2R}{c} f=S∗τ=cS∗2R
F r e q b i n = ( s a m p l e s − 1 ) ∗ f s s a m p l e s Freq_{bin} = \frac{(samples - 1) * f_s}{samples} Freqbin=samples(samples−1)∗fs
R = F r e q b i n ∗ c 2 ∗ S R = \frac{Freq_{bin} * c}{2 * S} R=2∗SFreqbin∗c
S 是 c h i r p 的 斜 率 S是chirp的斜率 S是chirp的斜率
τ 是 雷 达 与 目 标 之 间 往 返 的 时 间 \tau是雷达与目标之间往返的时间 τ是雷达与目标之间往返的时间
R 是 待 测 的 距 离 R是待测的距离 R是待测的距离
c 是 光 速 c是光速 c是光速
s a m p l e s 是 采 样 点 samples是采样点 samples是采样点
f s 是 是 采 样 率 f_s是是采样率 fs是是采样率
代码:
close all;clear;clc;
retVal = readDCA1000_1('adc_data.bin'); %读取雷达数据,retVal的维度是[rxnums,numChirps*numADCSamples]
data = retVal(1,1:256); %取第一行中的第1至256列的数据(一个chirp)
samples = 256; %采样点
Fs = 10e6; %采样率
slope = 29982e9; %chirp斜率
c = 3e8; %光速
index = 1:1:samples;
figure;
plot(index,abs(data));
title('before fft');
xlabel('samples');
%生成窗
range_win = hamming(256);
figure;
plot(index,abs(range_win));
title('hammingwin');
xlabel('samples');
%加窗操作
range_win = range_win';
din_win = data .* range_win;
%fft操作
datafft = fft(din_win);
figure;
plot(index,abs(datafft));
title('after fft');
xlabel('samples');
%samples转换为freq
freq_bin = (index - 1) * Fs / samples;
figure;
plot(freq_bin,abs(datafft));
title('after fft');
xlabel('frequency(Hz)');
%freq转换为range
range_bin = freq_bin * c / 2 / slope;
figure;
plot(range_bin,abs(datafft));
title('after fft');
xlabel('range(m)');
结果输出:
参考文献: