利用RDM速度投影法提取微多普勒时频图

2023-11-13

0 关于微多普勒

雷达发射电磁信号(EW)到物体并接受物体的回波信号。基于接收信号的延迟时间,雷达可以测量目标的距离。如果物体是移动的,接受信号的频率将偏离发射信号的频率,成为多普勒效应。多普勒频移取决于移动物体的径向速度,即在视线方向上的速度分量。基于接收信号的多普勒频移,雷达可以测量动目标的径向速度。如果除了主体移动外,物体或物体的任何结构部件还在摆动,则这种摆动将在回波信号上引起附加的频率调制。这种附加的多普勒调制成为微多普勒效应。

1 实验环境

本次处理的是采用TI AWR1843采集的数据。每个chrip有256个采样点,128个chirp为一帧,总共有256帧。采集完数据以后,readDCA1000.m中的代码进行处理,得到的数据是一个4*(256128256)的矩阵。取其中一个天线接收的数据进行处理。

2 RDM和微多普勒时频图提取

提取一个天线接受到的中频信号,也就是一个1*(256128256)的矩阵。其中第一个256是每个chrip的采样点,128是一个帧中chrip的个数,最后一个256是所有数据的帧数。也就是说一帧一共有256128=32768个数据,将其转换成128256的矩阵,其中128指的是慢时间的点数(行),256指的是快时间(列)。分别在快时间和慢时间加窗,然后做FFT,得到RDM(距离多普勒)。

如果使用 R D ( i , j , t ) RD(i,j,t) RD(i,j,t)表示在 t t t帧下位于RDM的第 i i i距离门, j j j速度门下的信号功率值。那么微多普勒频率可以表示为 D P ( t , j ) = ∑ i R D M ( i , j , t ) DP(t,j) = \displaystyle\sum_{i}^{} RDM(i,j,t) DP(t,j)=iRDM(i,j,t)
具体效果如下图所示:
在这里插入图片描述

3 代码实现

本次采用的是matlab实现

readDCA1000.m

%%% This script is used to read the binary file produced by the DCA1000
%%% and Mmwave Studio
%%% Command to run in Matlab GUI -readDCA1000('<ADC capture bin file>') 
function [retVal] = readDCA1000(fileName)
%% global variables
% change based on sensor config
numADCSamples = 256; % number of ADC samples per chirp
numADCBits = 16; % number of ADC bits per sample
numRX = 4; % number of receivers
numLanes = 2; % do not change. number of lanes is always 2
isReal = 0; % set to 1 if real only data, 0 if complex data0
%% read file
% read .bin file
fid = fopen(fileName,'r');
adcData = fread(fid, 'int16');
% if 12 or 14 bits ADC per sample compensate for sign extension
if numADCBits ~= 16
l_max = 2^(numADCBits-1)-1;
adcData(adcData > l_max) = adcData(adcData > l_max) - 2^numADCBits;
end
fclose(fid);
fileSize = size(adcData, 1);
% real data reshape, filesize = numADCSamples*numChirps
if isReal
numChirps = fileSize/numADCSamples/numRX;
LVDS = zeros(1, fileSize);
%create column for each chirp
LVDS = reshape(adcData, numADCSamples*numRX, numChirps);
%each row is data from one chirp
LVDS = LVDS.';
else
% for complex data
% filesize = 2 * numADCSamples*numChirps
numChirps = fileSize/2/numADCSamples/numRX;
LVDS = zeros(1, fileSize/2);
%combine real and imaginary part into complex data
%read in file: 2I is followed by 2Q
counter = 1;
for i=1:4:fileSize-1
LVDS(1,counter) = adcData(i) + sqrt(-1)*adcData(i+2); 
LVDS(1,counter+1) = adcData(i+1)+sqrt(-1)*adcData(i+3); 
counter = counter + 2;
end
% create column for each chirp
LVDS = reshape(LVDS, numADCSamples*numRX, numChirps);
%each row is data from one chirp
LVDS = LVDS.';
end
%organize data per RX
adcData = zeros(numRX,numChirps*numADCSamples);
for row = 1:numRX
for i = 1: numChirps
adcData(row, (i-1)*numADCSamples+1:i*numADCSamples) = LVDS(i, (row-1)*numADCSamples+1:row*numADCSamples);
end
end
% return receiver data
retVal = adcData;

data_RDM.m

function [d_fft]=data_RDM(data)
% 提取RDM
% [d_fft]=data_RDM(data)
% data=[128,256]
%% 距离fft
N=256; % 采样点数
C=128; % 每帧所包含的chirp数
hamming1=hamming(N);
sigRwin=zeros(C,N);
range_fft=zeros(C,N);
for ii=1:C
    sigRwin(ii,:)=hamming1'.*data(ii,:);
    range_fft(ii,:)=fft(sigRwin(ii,:),N);
end
%% 多普勒fft
hamming2=hamming(C);
sigDwin=zeros(C,N);
d_fft=zeros(C,N);
for ii=1:N
    sigDwin(:,ii)=hamming2.*range_fft(:,ii);
    d_fft(:,ii)=fftshift(fft(sigDwin(:,ii),C));
end

velocity_projection.m

clear all; clc;

[retVal] = readDCA1000('adc_dataJQ1.1_Raw_0.bin'); % 接受到的信号
L=128; % 一帧图像的chirp数
N=256; % 采样点
B=4*10^9;% 带宽
C=3*10^8;% 光速
slope=29982*10^9; % chirp斜率
micro_doppler = zeros(L,N);

for a=0:255
%% 传统格式
frame=retVal(1,128*256*a+1:128*256*(a+1));
data = reshape(frame,N,L);
data = data';
data = data - mean(data);   % 去直流分量
%% 获取RDM
[d_fft]=data_RDM(data);
for i = 1:256 
    micro_doppler(:,a+1) = micro_doppler(:,a+1) + abs(d_fft(:,i));
end
end
micro_doppler = medfilt2(abs(micro_doppler),[3 3]);

figure();
colormap(jet);
imagesc((10*log10(abs(micro_doppler))));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用RDM速度投影法提取微多普勒时频图 的相关文章

  • Matlab PARFOR 循环可以通过编程方式打开/关闭吗?

    有一个关于 MATLAB 中 parfor 的简单问题 我想在程序中设置一个标志 以便在 parfor 和常规 for 循环之间进行更改 基本上 我需要此功能 以便我的代码的某些部分可以在 调试 模式下更新图形 然后当关闭该标志时 使用 p
  • 按元素出现的频率对数组元素进行排序

    是否可以在 matlab octave 中使用sort函数根据元素的相对频率对数组进行排序 例如数组 m 4 4 4 10 10 10 4 4 5 应该产生这个数组 5 10 10 10 4 4 4 4 4 5是出现频率较低的元素 位于顶部
  • 扩展 MATLAB 函数名称的最大长度

    我编写了一个 MATLAB 程序 可以动态创建自定义 MATLAB 函数 并使用以下命令在其他 MATLAB 实例中启动它们unix命令 我使用这个程序来自动化 fMRI 神经影像分析 使用 SPM8 for MATLAB 一切正常 但是
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • MATLAB 中的多个捕获组

    我有一个包含数字或字母的字符串a 可能紧随其后的是r or l 在 MATLAB 中 以下正则表达式返回为 gt gt regexp 10r 0 9 a l r match ans 10r 我希望10 and r分开 因为我有两个捕获组 有
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • MATLAB 特征函数

    我很好奇哪里可以找到完整的描述FEATURE功能 它接受哪些论点 没有找到文档 我只听说过memstats and getpid 还要别的吗 gt gt which feature built in undocumented 注意 更完整的
  • MATLAB:具有复数的 printmat

    我想使用 MATLAB 的printmat显示带有标签的矩阵 但这不适用于复数 N 5 x rand N 1 y rand N 1 z x 1i y printmat x y z fftdemo N 1 2 3 4 5 x y x iy O
  • Matlab 和 Python 中的优化算法(dog-leg trust-region)

    我正在尝试使用 Matlab 和 Python 中的狗腿信赖域算法求解一组非线性方程 在Matlab中有fsolve https www mathworks com help optim ug fsolve html其中此算法是默认算法 而
  • 如何将二进制值列表转换为int32类型?

    我在 MATLAB 工作区中有一个小端格式的二进制数列表 我想将它们转换为 int32 a是由 0 和 1 组成的双向量 如下所示 a 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1
  • 使用符号求解器仅求解某些变量

    我正在尝试在 MATLAB 中求解包含 3 个变量和 5 个常量的方程组 是否可以使用solve求解三个变量 同时保持常量为符号而不用数值替换它们 当您使用SOLVE http www mathworks com access helpde
  • 黑白随机着色的六角格子

    我正在尝试绘制一个 10 000 x 10 000 随机半黑半白的六边形格子 我不知道如何将该格子的六边形随机填充为黑色和白色 这是我真正想要从这段代码中得到的示例 但我无法做到 https i stack imgur com RkdCw
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用
  • 正确使用 fft2 和 fftshift 进行着色形状

    我正在尝试从 Trucco Verri 文本 3d 计算机视觉入门技术 中看到的着色算法重新创建经典形状 但我很难理解 matlab 中的 fft 函数 本质上 我需要使用可积性约束来获取图像的深度 Z 我不确定在这种情况下何时使用 fft
  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • 读出 Matlab / Octave fft2() 函数输出的特定点

    我正在熟悉 Octave 及其功能fft2 在此玩具示例中 我的目标是生成以下 256 x 256 png 图像的 2D DFT 为了能够轻松理解输出 我尝试将此图像转换为 256 x 256 图像 消除颜色信息 Im imread cir

随机推荐

  • shell第3次练习

    要求 1 ping主机测试 2 判断一个用户是否存在 3 判断当前内核主版本是否为3 且次版本是否大于10 4 判断vsftpd软件包是否安装 如果没有则自动安装 5 判断httpd是否运行 6 判断指定的主机是否能ping通 必须使用 1
  • 基于WSL2的ubuntu(Windows 子系统)安装及开发环境搭建

    WSL 是 Windows Subsystem for Linux 的缩写 译为适用于Linux 的 windows 子系统 使用WSL让开发人员按原样运行 GNU Linux 环境 包括大多数命令行工具 实用工具和应用程序 且不会产生传统
  • python anaconda安装与使用

    安装 anaconda 下载 Anaconda Anaconda Distribution 打开 Anaconda Prompt 控制台 创建一个管理环境 conda create n pytorch python 3 6 conda 是指
  • NOIP2011提高组 DAY2 题解&总结

    考试时的心态 这次离线赛考的是NOIP2011 考得比较差 其实试卷比较水 水出新高度了 但是就考了160分 还是因为大意了 说实话 我一直在想第二题那个Sigma 是怎么计算的 很虚 虽然最后证明我的想法是正确的 但是由于这道题花的时间太
  • 自媒体短视频应该如何做选题?写好视频脚本?

    在这个内容同质化严重的环境下 选题成了业内人士最头疼的问题 这里分享几个常用的几个方法 1 逆向 这个方法主要是针对同质化的选题 如果一个选题 大家都在正向输出 那么我们可以逆向输出 比如 一块废铁是怎么制作成一把菜刀的 和 一把高颜值的菜
  • node request 解决请求时 有时候 content-length 获取不到

    今天使用了 request 模块的时候 想获取每次请求的大小 以方便判断下载进度 网速等等 然后 content length 头总是获取不到 下面给出解决方法 request 模块的使用方法见 api 文档 https github co
  • 链游玩家周报(6.6-6.12)

    导语 上周链游玩家平台动态总览 魔域传说 6 9上线链游玩家平台 NFT艺术品成交价创下历史记录 魔域传说 6 9上线链游玩家平台 魔域正版授权 由 魔域 原班团队打造 全新魔域正版游戏 魔域传说 震撼来袭 继承魔域IP世界观 还原经典玩法
  • 第十一届“泰迪杯” 数据挖掘挑战赛 火热报名中!

    距离第十一届 泰迪杯 数据挖掘挑战赛报名结束仅剩下两周时间 为能让各位参赛小伙伴对 泰迪杯 竞赛进一步了解 今天小编为大家整理了详细的竞赛介绍 想要了解竞赛的小伙伴 快跟紧我的步伐吧 泰迪杯竞赛介绍 泰迪杯 数据挖掘挑战赛由泰迪杯数据挖掘挑
  • Unity3D:摄像头主角视角追踪

    摄像机的平滑追踪对于游戏来说十分实用 是游戏交互中必不可少的一部分 在一些竞速游戏中视角往往需要大幅度变动 效果 新浪上传又挂了 FollowTarget cs 挂到摄像机上即可 using UnityEngine using System
  • [网鼎杯 2018]Comment(二次注入,git泄露,git恢复)

    进入题目是这样的 要发帖还必须登录 在这里已经给了你用户名并提示了密码 密码隐藏了后三位 我们可以用爆破爆破后面三位的方法 由爆破状态码的密码后三位为666 登录进去就可以发帖了 接下来用dirsearch扫描 发现存在 git文件 那应该
  • 人工智能的缺陷

    首先从应用层面理解什么是人工智能 目前人工智能主流应用面包括 自然语言处理领域 代表为chatgpt 我们能用其进行日常交流 问题答疑 论文书写等 计算机视觉领域 代表为人脸识别 现在广泛应用于进出小区 办公打卡 实名认证等 所以简单理解人
  • Ubuntu下配置DNS

    方法一 通过 etc network interfaces 在它的最后增加一句 多个dns之间用空格分隔 interfaces 5 file used by ifup 8 and ifdown 8 Include files from et
  • Jeecg-boot JDBC任意代码执行漏洞

    漏洞描述 JeecgBoot是一款开源的企业级低代码平台 提供了表单 视图 流程等一键生成代码功能 目前在GitHub具有 35 5k star 在V3版本中 由于未对JDBC连接字符串进行限制 未授权的攻击者可配置恶意的连接字符串 通过发
  • 【react】props的批量传递

    真实开发中 如果有很多个要传递的属性 并且属性值很有可能是通过后台接口拿到的 那么一个个的在标签上写属性就不行了 正确写法 此处 p 的 不是解构赋值的那个 而是react用来放置变量的 实际上真实的表达式只有 p 但是根据es6语法 对象
  • 解读awr报告

    第一次看到awr报告 里面包含很多东西 完全不知道从哪里看起也不知道各项指标都是什么含义 从头到尾看了一遍 啥也没有看到 看了后面忘了前面的 花费一天的时间去熟悉它 在网上查资料对着报告一项项的熟悉了一遍 DB Name DB Id Ins
  • Vim:如何退出Vim编辑器?

    Vim 如何退出Vim编辑器 笑 这个问题可以说是每个初学者的 必经之路咯 解决办法如下 想要退出vim时 先按Esc 然后直接输入 就会在最下面显示出一行 vim开始进入命令模式 而不是write模式 当初自己傻得不行 明知道命令却不知道
  • SQL Server 2012下载和安装配置详细教程手册

    SQL Server 2012 下载和安装详细教程 目录 SQL Server 2012 下载和安装详细教程 1 软件下载 2 软件安装 3 软件验证 1 软件下载 1 官网地址 https www microsoft com zh cn
  • 【LeectCode】刷题指南

    LeetCode刷题指南 算法 双指针 633 平方数之和 https leetcode cn com problems sum of square numbers 345 反转字符串中的元音字母 https leetcode cn com
  • 数字集成电路设计-18-UVM

    引言 UVM Universal Verification Methodology 可以理解为形而上的东西 可以理解为是基于System verilog的一个库 提供一些API调用 其实没必要把UVM抬的那么高 上升到形而上的层次 因为在实
  • 利用RDM速度投影法提取微多普勒时频图

    0 关于微多普勒 雷达发射电磁信号 EW 到物体并接受物体的回波信号 基于接收信号的延迟时间 雷达可以测量目标的距离 如果物体是移动的 接受信号的频率将偏离发射信号的频率 成为多普勒效应 多普勒频移取决于移动物体的径向速度 即在视线方向上的