Pyramid: Real-Time LoRa Collision Decoding with Peak Tracking技术思考与解读

news2024/9/17 8:09:22

一点点个人的论文解读、技术理解,难免会有错误,欢迎大家一起交流和学习~~
😀作者关于lora的系列文章从问题陈述到方法论的提出,再到实验评估,文章结构条理清晰,逻辑性强,并深入分析了LoRa信号处理的细节,太喜欢这种写作风格~~

这篇文章发表在IEEE INFOCOM 2021会议上,介绍了一种名为Pyramid的实时LoRa碰撞解码方法,该方法针对低信噪比(SNR)环境下的LoRa信号,能够有效地分离和解码发生碰撞的多个数据包。 

Technology

目前的主流技术:将时域上分布的能量集中至频域的单个频点上aggregate energy in the time domain to a single frequency in the frequency domain

本文关键技术:针对一个固定的chirp信号滑动解调时间窗,可以在时域上获得不同峰值,这些峰值将会形成一个等腰三角形

Our strategy relies on the observations that (1) the peak height of a symbol is proportional to the intersection length of the symbol and the moving window; and (2) while moving the window, the peak location also moves accordingly.

For apex timestamps of consecutive chirp symbols from the same packet, their timestamp interval should be equal to the chirp length.

(同一个数据包得到的顶点间隔将会等于chirp信号的长度)

带来问题:如何在冲突存在的情况下获取峰值

  1. 传统的峰值检测是基于一定阈值,但是For low SNR LoRa signals, the peak height may be dynamic and easily impacted by interference/noise.
  2. 有限的时间窗会导致旁瓣泄露,从而影响峰值识别due to limited window size, each peak is accompanied by multiple frequency sidelobes for the FFT result in each window. Those sidelobes may be misidentified as peaks and thus introduce decoding errors.

(所以如何在消除旁瓣干扰的情况下动态识别峰值)

解决措施:结合了串行干扰消除的动态异常值检测we propose a dynamic outlier-based peak search method that finds all peaks by iterative searching and peak cancellation

For each window, we first apply FFT to the dechirping result and find the maximum point as shown in Figure 4(a). Then, we examine whether the maximum point is a real peak by outlier-test. We define a point as an outlier when it is higher than M +6σ, where M is the mean of the FFT result, and σ is the variance. If the maximum point is an outlier, then it is considered a peak. Then we cancel the peak from the FFT result with the surrounding points monotonically approaching it  

(周围点单调逼近是什么方法??)

as shown in Figure 4(b). Then we iteratively find the peaks according to the above process until no outlier point is found.

同时为了避免旁瓣泄露,本文使用了汉明窗we apply a hamming window before FFT to suppress the influence of sidelobes. 但是加窗也会扭曲频谱形状applying hamming window also distorts the height of peaks, which hurts the SNR and changes the shape of the triangle trajectory. 所以本文采用了获取两个窗的相应的频谱列表,实际上就是用汉明窗列表作为干净的频率索引,用矩形窗保留实际频率数值To address this problem, we combine the hamming window and rectangle window to derive accurate peaks. We can obtain two peak lists, one from the rectangular window (normal FFT) and the other from the hamming window.

(所以接下来要如何在识别出峰值之后进行峰值追踪)

每次滑动时间窗口都会得到频率值,理论上来自同一个symbol的两个时刻需要满足:

For each new detected peak, we first check whether it belongs to any known symbol. If the new peak satisfies Eq. (6) with the last peak in a symbol, it is considered as a peak of that symbol. Otherwise, the new peak is from a new symbol. Finally, each symbol can produce a serial of peaks in the moving windows: peaks = {(t0,h0,f0), (t1,h1,f1), ...(tk,hk,fk)}.

(所以接下来在获取了一个symbol对应的各个峰值之后如何锁定顶点数值)

由于时间窗受限(太多的话导致计算开销过高),只有有限数量的峰值会被找到

于是本文使用了线性回归的方法we propose a constrained regression apex finding method based on the peak list. We first divide the peak list into two lists peaks1 and peaks2 based on the top two peaks, i.e., (t1,h1) and (t2,h2) where t1 <t2. The list peaks1 consists of (t1,h1) and peaks before (t1,h1), while peaks2 consists of the remaining peaks. We apply linear regression on peaks1 and peaks2 to find the least square distance. This results in two lines with opposite slopes. Then we can calculate the intersection (t∗,h∗) of the two lines as the apex.

(然后是将符号依次对应至不同的数据包)

通过时间差的规律性和能量差异来区分符号所属的数据包,防止碰撞时符号错误分类的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2116846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣刷题(5)

整数转罗马数字 整数转罗马数字-力扣 思路&#xff1a; 把各十百千位可能出现的情况都列出来&#xff0c;写成一个二维数组找出该数的各十百千位&#xff0c;与数组中的罗马元素对应 const char* ch[4][10]{{"", "I", "II", "III"…

webpack - 五大核心概念和基本配置(打包一个简单HTML页面)

// 五大核心概念 1. entry&#xff08;入口&#xff09; 指示Webpack从哪个文件开始打包2. output&#xff08;输出&#xff09; 指示Webpack打包完的文件输出到哪里去&#xff0c;如何命名等3. loader&#xff08;加载器&#xff09; webpack本身只能处理js&#xff0c;json等…

Bev pool 加速(2):自定义c++扩展

文章目录 1. c++扩展2. 案例2.1 案例12. 1.1 代码实现(1) c++ 文件(2) setup.py编写(3) python 代码编写2.1 案例1在bevfusion论文中,将bev_pooling定义为view transform中的效率瓶颈,bevfusion 主要就是对bev_pooling进行了加速,使得视图转换的速度提高了40倍,延迟从500ms…

charles配置安卓抓包(避坑版)

下载Charleshttps://www.charlesproxy.com/安装&#xff0c;疯狂点击下一步即可注册&#xff1a;打开Charles&#xff0c;选择“Help”菜单中的“Register Charles”&#xff0c;进网站生成密钥&#xff1a;https://www.zzzmode.com/mytools/charles/,将生成的密钥填入注册重启…

JavaScript练手小技巧:利用鼠标滚轮控制图片轮播

近日&#xff0c;在浏览网站的时候&#xff0c;发现了一个有意思的效果&#xff1a;一个图片轮播&#xff0c;通过上下滚动鼠标滚轮控制图片的上下切换。 于是就有了自己做一个的想法&#xff0c;顺带复习下鼠标滚轮事件。 鼠标滚轮事件&#xff0c;参考这篇文章&#xff1a;…

Vue 3 + Element Plus 封装单列控制编辑的可编辑表格组件

在Web应用开发中&#xff0c;经常需要提供表格数据的编辑功能。本文将介绍如何使用Vue 3结合Element Plus库来实现一个支持单列控制编辑功能的表格&#xff0c;并通过封装组件的形式提高代码的复用性。通过本教程&#xff0c;你将学会如何构建一个具备单列控制编辑功能的表格组…

Cloudways搭建WordPress外贸独立站完整教程(1)

验证邮件发送完成后&#xff0c;就等待Cloudways的回复邮件&#xff0c;一般24小时之内就会收到激活的邮件。 Cloudways账号升级 激活成功后还需要账户升级&#xff0c;Cloudways提供了为期3天的免费试用体验。如果在试用期结束之前未绑定信用卡以升级账户&#xff0c;试用期…

UE5学习笔记21-武器的射击功能

一、创建C类 创建武器子弹的类&#xff0c;创建生产武器子弹的类&#xff0c;创建弹壳的类&#xff0c;生产武器子弹的类的父类是武器的类 创建后如图&#xff0c;ProjectileMyWeapon类(产生子弹的类)继承自weapon类&#xff0c;Projectile(子弹的类)&#xff0c;Casing(弹壳声…

Claude 3.5:如何高效辅助编程——全面入门指南

在现代编程世界中&#xff0c;AI的角色越来越重要&#xff0c;尤其是在代码生成、调试、文档生成等领域中&#xff0c;AI工具的运用让开发者可以更高效地完成任务。Claude 3.5是一个这样的AI助手&#xff0c;凭借其强大的自然语言处理能力&#xff0c;在编程中提供了大量的支持…

Sui Narwhal and Tusk 共识协议笔记

一、Overwiew [ 整体流程: Client提交transaction到Narwhal Mempool。(Narwhal Mempool由一组worker和一个primary组成) Mempool接收到的Transaction->以Certificate的形式进行广播 由worker将交易打包为Batch,worker将Batch的hash发送给primary primary上运行了mempo…

mysql笔记4(数据类型)

数据库的数据类型应该是数据库架构师(DBA)和产品经理沟通后依据公司的项目、业务而定的&#xff0c;而且会不停地变化。数据类型的选择方面没有一个统一的标准&#xff0c;但是应该符合业务、项目的逻辑标准。 菜鸟教程 Mysql 数据类型 文章目录 1. int类型2. 浮点数3. 定点数4…

C# Dotfuscator加密dll设置流程

按照以下步骤处理后&#xff0c;反编译基本只能看到函数名&#xff0c;看不到源代码 1.Input 2.Setting 3.Rename 4.Rename 5.Control Flow 6.String Encryption 7.Output

【stata】自写命令分享dynamic_est,一键生成dynamic effect

1. 命令简介 dynamic_est 是一个用于可视化动态效应&#xff08;dynamic effect&#xff09;的工具。它特别适用于事件研究&#xff08;event study&#xff09;或双重差分&#xff08;Difference-in-Differences, DID&#xff09;分析。通过一句命令即可展示动态效应&#xf…

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求&#xff0c;要求做一款播放器&#xff0c;发现能力上跟EasyPlayer.js基本一致&#xff0c;满足要求&#xff1a; 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏&#xff08;单屏/全屏&#xff09; 多分屏&#xff08;2*2&#xff09; 多分屏…

JVM面试(七)G1垃圾收集器剖析

概述 上一章我们说了&#xff0c;G1收集器&#xff0c;它属于里程碑式的发展&#xff0c;开创了面向局部收集垃圾的概念。专门针对多核处理器以及大内存的机器。在JDK9中&#xff0c;更是呗指定为官方的GC收集器。满足高吞吐的通知满足GC的STW停顿时间尽可能的短。 虽然现在我…

恶意代码分析-Lab01-01

实验一 这个实验使用Lab01-01.exe和Lab01-01.d文件,使用本章描述的工具和技术来获取关于这些文件的信息。 问题: 将文件上传至 http:/www.VirusTotal.com/进行分析并查看报告。文件匹配到了已有的反病毒软件特征吗?这些文件是什么时候编译的?这两个文件中是否存在迹象说明它…

如何在docker容器中导入.sql文件

一、准备工作 确保容器运行&#xff1a; 首先确认包含 MySQL 服务的 Docker 容器正在运行。可以通过 docker ps 命令查看正在运行的容器列表。如果容器未运行&#xff0c;使用 docker start [container_id] 命令启动容器。 准备数据库文件&#xff1a; 将需要导入的数据库文件&…

VMware安装Ubuntu虚拟机

Ubuntu镜像下载 https://ubuntu.com/download/desktop 创建虚拟机 1.典型配置 2.稍后安装操作系统 3.选择操作系统&#xff0c;Linux&#xff0c;ubuntu64位 3.设置虚拟机名称和安装位置 4.磁盘大小&#xff0c;存储为单个文件 安装系统 1.选择镜像 2.开启虚拟机 2.安装Ub…

CTFHub技能树-Git泄漏-Log

目录 一、前提知识 1.git泄漏原理 ​编辑 2.git文件泄漏造成后果 3.利用方法 (1) GitHack是一个.git泄露利用脚本&#xff0c;通过泄露的.git文件夹下的文件&#xff0c;还原重建工程源代码。渗透测试人员、攻击者&#xff0c;可以进一步审计代码&#xff0c;挖掘&#x…

【重学 MySQL】十七、比较运算符的使用

【重学 MySQL】十七、比较运算符的使用 **等于&#xff08;&#xff09;**基本用法示例注意事项结论 **安全等于运算符&#xff08;<>&#xff09;****不等于&#xff08;<> 或 !&#xff09;**示例注意事项 **大于&#xff08;>&#xff09;、大于等于&#xf…