利用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 中的逻辑数组与数值数组

    我正在比较两个二进制数组 我有一个数组 其中值可以是一或零 如果值相同则为 1 如果不同则为零 请注意 我正在做检查之外的其他事情 因此我们不需要进入矢量化或代码的性质 在 MATLAB 中使用数值数组和逻辑数组哪个更有效 Logical
  • MATLAB:图像角坐标和引用元胞数组

    我在比较不同元胞数组中的元素时遇到一些问题 这个问题的背景是我正在使用bwboundariesMATLAB 中的函数可追踪图像的轮廓 该图像是结构横截面 我试图找出整个部分是否具有连续性 即 只有一个轮廓由bwboundaries命令 完成
  • 如何从 Matlab 运行 R 脚本 [重复]

    这个问题在这里已经有答案了 我有 m 文件 我想用它来运行 R 脚本 我怎样才能做到这一点 Matlab文件 caller m some matlab code need to call a R script some matlab cod
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • 将值从 C++ MEX 文件返回到 MATLAB

    我正在编写一个从 C 代码中检索数据的 MATLAB 程序 为此 我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction 虽然可以在 MATLAB 中读取读取值 但我无法检索它来使用它 如果不清楚 我有与这里完全相
  • 使用网络计算机进行 Matlab 并行处理

    我熟悉matlabpool and parfor用法 但我仍然需要加快计算速度 我的 1GB 网络中有一台功能更强大的计算机 两台计算机都有 R2010b 并且具有相同的代码和路径 使用两台计算机进行并行计算的最简单方法是什么 我今天使用的
  • 在 numpy/scipy 中查找 matlab 函数

    是否有一个等价的函数find A gt 9 1 来自 numpy scipy 的 matlab 我知道有nonzeronumpy 中的函数 但我需要的是第一个索引 以便我可以在另一个提取的列中使用第一个索引 Ex A 1 2 3 9 6 4
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • MATLAB 图形渲染:OpenGL 与 Painters?

    当谈到使用哪个渲染器来处理 MATLAB 图形或何时它很重要时 我一无所知 但我遇到过某些示例 其中does matter plot 0 0 ko markersize 50 linewidth 8 set gcf renderer ope
  • 静态时序数据的数据库解决方案

    我们拥有一个庞大且不断增长的实验数据集 该数据集取自约 30 000 名受试者 对于每个主题 都有多个数据记录 在每个记录中 收集了多个生理数据时间序列 每个时间序列约 90 秒长 并以 250Hz 采样 我应该注意到 时间序列的任何给定实
  • 如何使用 MATLAB 的“等值面”函数创建三角球体

    如何创建一个三角球体 其中每个三角形的面面积相同 我想要这样的东西 http imageshack us a img198 5041 71183923 png http imageshack us a img198 5041 7118392
  • 如何在 MATLAB 的 for 循环中读取多个图像?

    我已将结果分段放在一个文件夹中 这些需要在 for 循环中读取并在循环中进一步处理 我尝试阅读如下 for i 1 10 file name dir strcat C Users adminp Desktop dinosaurs im im
  • 图像分析-光纤识别

    我是图像分析新手 您知道如何以仅获取纤维的方式对该图像进行二值化吗 我尝试过不同的阈值技术等 但没有成功 我不介意应该使用什么工具 但我更喜欢 NET or Matlab PS 我不知道该把答案放在哪里 所以我把它放在StackOverfl
  • 如何将条形图的 XtickLabels 向左移动?

    我目前正在尝试创建频率直方图 为此 我必须创建一个条形图 条形图之间没有空格 然而 这集中于XTickLabels在酒吧的中间 由于它是一个直方图 我希望数值位于每个条形之间的线上 以便它可以直观地指示间隔 本质上 我需要将所有刻度标签移至
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • 使用 GPU 进行 Matlab 卷积

    我用gpuArray尝试了matlab的卷积函数conv2 convn 例如 convn gpuArray rand 100 100 10 single gpuArray rand 5 single 并将其与 cpu 版本 convn ra

随机推荐

  • 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 到物体并接受物体的回波信号 基于接收信号的延迟时间 雷达可以测量目标的距离 如果物体是移动的 接受信号的频率将偏离发射信号的频率 成为多普勒效应 多普勒频移取决于移动物体的径向速度 即在视线方向上的