173
社区成员
发帖
与我相关
我的任务
分享
1) 本文档包含关于在应用中国剩余定理 (CRT) 解决调频连续波 (FMCW) 雷达速度模糊问题研究中收集的实时现场数据集的信息。该数据用于题为“在 FMCW COTS 毫米波雷达中使用 CRT 解决速度模糊问题:应用教程”的论文中提出的教程学习。
2) 鼓励研究人员、从业人员和学生在其学习和研究中使用此数据集。作者特此授权使用此数据集,前提是将在使用此数据集的论文中提供对该数据集和相关论文的适当引用。
3) 确定数据集是否适用于预期用途的责任完全由使用该数据集的个人/实体承担。作者不承担因使用该数据集而可能产生的任何明示或暗示的损害/责任。
4) 数据集被组织在22个文件夹中,分别对应相关文献表二中提到的22个数据集。每个文件夹包含一个名为 adcData.mat 的 MATLAB 文件,类型为 double(复数)。这是一个维度为 2×1638400 的矩阵。矩阵的每个元素都是 格式为 的复数。每个复数都是毫米波 (mmwave) 商用现货 (COTS) 汽车毫米波 FMCW 雷达中中频 (IF) 同相-正交 (I/Q) 混频器的输出。实验设置和详细信息请参阅相关文献。
矩阵 adc.Data 的每一行都包含来自两个接收天线之一的数据。每行的数据按照下图 1 进行组织:
每个线性调频脉冲包含 64 个 ADC 样本。两行数据分别对应 800 帧。每帧包含两个子帧。子帧 1 包含 17 个线性调频脉冲,子帧 2 包含 15 个线性调频脉冲。因此,每行包含 (64 个 ADC 样本/线性调频脉冲 × (17 个线性调频脉冲/子帧 1 + 15 个线性调频脉冲/子帧 2) × 800 帧 = ) 1683400 个复数。
(注意:MATLAB R2020b 无法显示元素超过 524288 个变量的摘要。因此,可能无法观察到 adcData 矩阵的条目。在这种情况下,可以根据需要提取矩阵的所需部分以直观地观察其内容。)
一个子帧可以被视为一个相干处理间隔 (CPI)。从信号处理的角度来看,子帧和帧之间没有区别。由于硬件配置限制,它们的命名方式有所不同。
5)表一列出了两种CPI共有的雷达重要参数。这些参数适用于相关文献表二中的测试1~17。

借助下图 2,可以直观地看到各个啁啾参数:
相关 CPI 中的线性调频脉冲按照下表进行编程。
表 II 适用于子帧 1。这些线性调频脉冲被归类为配置文件 0。

表 III 适用于子帧 2。它们被分组为配置文件 1。

6)试验18~22的数据采用相同的参数收集,但表IV中提到了以下差异:

数据读取代码:
clc;
close all;
clear;
%%
path = '.\Dataset for Test 2\';
data = load([path,'adcData.mat']);
Rx1 = data.adcData(1,:);
Rx2 = data.adcData(2,:);
subframe1 = 17;
subframe2 = 15;
adcsample = 64;
doppler_fft_point = 32;
len_data = size(Rx1,2);
frames = len_data/adcsample/(subframe1+subframe2);
length_data =adcsample*(subframe1+subframe2);
%% MTI history
history1 = zeros(adcsample,subframe1);
history2 = zeros(adcsample,subframe2 );
for f_idx = 250:frames
rx1 = Rx1((f_idx-1)*length_data+1:f_idx*length_data);
rx1_rd = reshape(rx1,adcsample,subframe1+subframe2);
rx1_rd_subframes1 = rx1_rd(:,1:subframe1);
rx1_rd_subframes2 = rx1_rd(:,subframe1+1:end);
%range fft
RangefftRX1_subframes1 = complex(zeros(adcsample,subframe1));
RangefftRX1_subframes2 = complex(zeros(adcsample,subframe2));
for sub1_idx = 1:subframe1
RangefftRX1_subframes1(:,sub1_idx) = fft(rx1_rd_subframes1(:,sub1_idx).*hanning(1,adcsample));
end
for sub2_idx = 1:subframe2
RangefftRX1_subframes2(:,sub2_idx) = fft(rx1_rd_subframes2(:,sub2_idx).*hanning(1,adcsample));
end
%MTI
alpha = 0.99; %α值越小,滤波输出就越依赖于历史记录,因此滤波器的表现就会越滞后,更有利于检测微动目标。
%α值接近1意味着历史记录几乎不会产生任何影响,因此滤波器对变化的反应很快,但也可能会漏掉一些静态目标,更有利于检测大幅度运动目标。
Fn1 = RangefftRX1_subframes1 - history1;
history1 = alpha*RangefftRX1_subframes1+(1-alpha)*history1;
Fn2 = RangefftRX1_subframes2 - history2;
history2 = alpha*RangefftRX1_subframes2+(1-alpha)*history2;
%doppler fft
DopplerfftRX1_subframes1 = complex(zeros(adcsample,doppler_fft_point));
DopplerfftRX2_subframes2 = complex(zeros(adcsample,doppler_fft_point));
for j = 1:adcsample
DopplerfftRX1_subframes1(j,:) = fftshift(fft(Fn1(j,:).*hanning(1,subframe1),doppler_fft_point));
DopplerfftRX2_subframes2(j,:) = fftshift(fft(Fn2(j,:).*hanning(1,subframe2),doppler_fft_point));
end
figure(1);
subplot(121);
mesh(abs(DopplerfftRX1_subframes1));
title(['frames = ',num2str(f_idx)])
subplot(122);
mesh(abs(DopplerfftRX2_subframes2));
title(['frames = ',num2str(f_idx)])
end
绘图结果:

如需数据集,可以咨询调皮连续波。