物联网定位技术|实验报告|实验三 PDM定位算法

news2024/11/16 0:22:01

目录

1.  实验目标

2.  实验要求

3.  算法介绍

3.1 PDM算法

4.  算法实现

第一步:将数据读入内存

第二步:判断锚节的个数

第三步:将所有的两点间的距离关系读入距离矩阵

第四步:利用最短路径算法

第五步:构造节点跳数矩阵P_all

第六步:构造PDM算法所需要的各种矩阵

第七步:利用最小二乘法估算具体位置

第八步:计算误差,输出结果

5.  实验结果和分析

1、实验结果

(1)无误差扰动值

(2)5%的误差扰动值

(3)10%的误差扰动值

2、误差分析​​​​​​​

6.  实验总结


物联网定位技术

实验报告

学生姓名

白** 

学    号

2008070101

专业班级

物联201

指导老师

曾**

学    院

信息学院

完成时间

2023年4月3日

实验3  PDM定位算法

1.  实验目标

        了解典型的无线传感器网络定位算法;

        在所给的网络中实现所讲授的无线传感器网络定位算法并进行比较。

2.  实验要求

        掌握典型的无线传感器网络定位算法基本原理,理解PDM定位算法、基于MDS的定位算法。

        利用所给的网络数据,实现两种以上的定位算法并进行比较。

3.  算法介绍

3.1 PDM算法

        算法思想:PDM算法全称为计算邻近度-距离转换矩阵算法 (Proximity-to-Distance Mapping ),也就是说通过计算节点间的邻近度-距离转换矩阵来给未知节点进行定位,本算法中涉及到:

        通过锚节点间协作构建邻近度-距离转换矩阵D=P*T,对于已知的锚节点,它们之间的跳数可以通过Floyd算法计算出来,即可获取关于所有锚节点的跳数矩阵P,而锚节点的坐标已知,其相互之间的距离可以计算出来,即构造了距离矩阵D。利用伪逆技术增强鲁棒性,计算出转换矩阵T:

        若锚节点的分布要能较准确的刻画网络拓扑性质,我们可以认为矩阵T也符合网络中的非锚节点。而非锚节点到锚节点的跳数可以用Floyd算出,即P可算出,通过D=T*P可以算出某个点到锚节点的距离,再调用算法一可以算出坐标。

4.  算法实现

         前提条件:已知位置的锚节点个数要超过3个;对所有节点来说,在添加完邻接矩阵关系后,是一个连通图,没有孤立节点。

        特别说明:图是否为连通图对于PDM算法影响很大,如果有孤立节点,矩阵运算就不会正确,无法定位。

第一步:将数据读入内存

        利用Matlab中已有的函数load将文件中的内容以矩阵的方式读入内存。

第二步:判断锚节的个数

第三步:将所有的两点间的距离关系读入距离矩阵

第四步:利用最短路径算法

        求得两点间的最短路径,以及最短路径下每对节点的上一跳信息。

第五步:构造节点跳数矩阵P_all

        根据上一跳矩阵jump_n,通过循环判断可以得出一个32*320的矩阵P_all,P_all(i,j)表示从第i和点到第j个点最少需要多少跳。

for i = 1:nodes_n

    for j = 1:nodes_n

       temp_num = last_jump(i,j);

       while(temp_num~=i)

           P_all(i,j) = P_all(i,j)+1;

           temp_num=last_jump(i,temp_num);

       end

    end

end

第六步:构造PDM算法所需要的各种矩阵

        所有锚节点的跳数矩阵P_anchors、锚节点的距离矩阵D_anchors、转换矩阵T、非锚节点到锚节点的跳数P_Nanchors、未知节点到锚节点的距离D_Nanchors

P_anchors = P_all(1:anchors_n,1:anchors_n);      

D_anchors = pdist2(true_anchors,true_anchors);       

D_anchors = D_anchors(1:anchors_n,1:anchors_n);

T = D_anchors*transpose(P_anchors)*inv(P_anchors*transpose(P_anchors));       P_Nanchors = P_all(1:anchors_n,33:320);      

D_Nanchors = T*P_Nanchors; 

第七步:利用最小二乘法估算具体位置

第八步:计算误差,输出结果

5.  实验结果和分析

1、实验结果

(1)无误差扰动值

说明:蓝色“*”表示已知点的数据,红色圆点表示无扰动值时估计数据,连线表示误差情况。

(2)5%的误差扰动值

说明:蓝色“*”表示已知点的数据,蓝色圆点表示无扰动值时估计数据,连线表示误差情况。

(3)10%的误差扰动值

说明:蓝色“*”表示已知点的数据,黄色圆点表示无扰动值时估计数据,连线表示误差情况。

​​​​​​​

2、误差分析

        三次定位中,误差(方差)分别为:73.2254、61.5467、60.5671。

        可以看出,此算法在没有改进时定位效果十分不好,其主要原因是在计算距离转换矩阵T的时候,利用了公式,在此公式中使用了P的逆矩阵,当P的某个元素本身很小时,在进行矩阵转换的时候将会变得很大,直接导致了后面的定位不准确。应该利用一定的算法消除误差,在本实验中,由于时间的有限,就不对此进行研究了。但是,通过阅读文献,我们可以知道,PDM算法应该是三个算法中,定位最为准确的算法。

        为了研究锚节点个数对定位的影响,我们将PDM算法的锚节点个数改为3个,即只有1、2、3号节点为锚节点,其定位结果如下:

6.  实验总结

        可以看出,在没有对PDM算法进行改进的情况下,锚节点个数过多反而使PDM算法的定位不准确。在这次物联网定位技术的实验过程中,使我掌握了多种定位算法以及它们的误差特点。

        在阅读给定的文档过程中,遇到了很多比较生涩的地方,一点点查资料、一次次演算,对WiFi指纹定位的原理和无线传感器网络迭代式多边定位算法、DV-HOP算法、PDM定位算法有了比较深入的理解。

        本次实验我在Eclipse上编写调试Android代码,加深了Eclipse功能的认识,更加熟悉了Eclipse在编程中的操作和问题解决方法。实验过程中,我复习了关于Android方面的知识,加深了第Android开发的了解。将所学的知识一个用到了实践中去,理论与实践相结合,从理论中得出结论,在实践中解决问题,这样才能全面提高分析问题解决问题的能力。

        实验也存在许多不足的地方有待改进,例如操作界面不够美观,结果显示不够直观等,有待我们去更深入地学习,进一步优化。

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

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

相关文章

JVM-0419~20

类的加载 类的加载过程(生命周期) 类的加载分几步? 按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段: 基本数据类型在虚拟机里面都预…

【智能座舱系列】-华为发布全球首款车载光场屏 开拓车载视觉体验新航道

4月16日,2023华为智能汽车解决方案“内赋智能,焕发新生”新品发布会在上海举行,华为正式发布全新车载娱乐屏品类:HUAWEI xScene 光场屏。该产品采用独创的光学引擎技术,具有大画幅、景深感、低晕动、眼放松等特点,大幅提升车内视觉体验。 华为光场屏:私人影院装入车内,…

非常详细的阻抗测试基础知识

编者注:为什么要测量阻抗呢?阻抗能代表什么?阻抗测量的注意事项... ...很多人可能会带着一系列的问题来阅读本文。不管是数字电路工程师还是射频工程师,都在关注各类器件的阻抗,本文非常值得一读。全文13000多字&#…

2. 算法分析

2. 算法分析 研究算法的最终目的就是如何花更少的时间,如何占用更少的内存去完成相同的需求。 我们要计算算法时间耗费情况,首先我们得度量算法的执行时间,那么如何度量呢? 2.1 算法的时间复杂度分析 事后分析估算方法&#x…

关于web安全测试在功能测试中的应用

关于web安全测试在功能测试中的应用 一、安全基本概念1.1实施安全评估1.1.1资产等级划分1.1.2威胁分析1.1.3风险分析1.1.4 安全方案 1.2 安全原则 二、我的安全测试模型三、安全测试在功能测试中的应用3.1 更改url3.2 逻辑缺陷:3.3 破坏流程顺序3.4 接口提示信息3.5…

HNU-计算机系统-讨论课5

WARNING: 本题为开放性题目,所设计的也仅仅是一个可能的模型而已,再考虑到个人水平有限。在呈现效果上难免会有缺漏以及可行性的缺陷。故请批判性地接收! 所以如果知识有错误或者缺漏,请一定要指出,您的建…

计算机类大学生竞赛经验分享

如果你是作为一个科班出生的学习编程方向的一名在校大学生,那么如果对竞赛感兴趣,可以看看这篇文章 本人作为一名前端开发方向的学生,将自己这几年的参赛经验和比赛相关类型介绍分享给大家 首先我们要知道,竞赛分为三种大概的方向…

《类和对象》(上篇)

本文主要对类和对象有一个初步的了解。 文章目录 前言1、类的引入和定义2、类的访问限定符及封装2.1 访问限定符2.2 封装 3 、类的作用域4 、类的实例化5 、类对象的模型5.1 类对象的大小5.2 类对象存储方式 6、this 指针6.1 引子6.2 特性6.3 this指针的一个问题 前言 C语言是面…

MySQL插入和查询blob字段类型的sql语句

创建表: CREATE TABLE t_inpatient_medical_records ( id bigint(20) NOT NULL AUTO_INCREMENT, inpatient_record_code varchar(32) DEFAULT NULL COMMENT 就诊流水号, patient_name varchar(256) DEFAULT NULL COMMENT 患者姓名, pat_id varchar(16) DEFAULT NULL…

java数据类型的转换以及精度丢失

java数据类型的转换以及精度丢失_long转double会丢失精度吗_ღLiJia的博客-CSDN博客 一.浮点类型在计算机当中的存储 float存储需求是4字节(32位), 其中1位最高位是符号位,中间8位表示阶位,后32位表示值 float的范围: -2^128 ~ …

搞懂哈希散列

文章目录 1. 哈希概念2. 如何解决哈希冲突?3. 哈希函数概念4. 闭散列(目前淘汰的方法,了解)**4.1.线性探测****4.2. 二次探测**4.3 闭散列查找与删除 5. 开散列6. 开散列与闭散列比较 1. 哈希概念 搜索树需要多次的关键码比较来搜索到结果&a…

AutoGPT、AgentGPT、BabyAGI、HuggingGPT、CAMEL:各种基于GPT-4自治系统总结

ChatGPT和LLM技术的出现使得这些最先进的语言模型席卷了世界,不仅是AI的开发人员,爱好者和一些组织也在研究探索集成和构建这些模型的创新方法。各种平台如雨后春笋般涌现,集成并促进新应用程序的开发。 AutoGPT的火爆让我们看到越来越多的自…

Linux 3.14的设备树-实战开发代码

OF提供的函数主要集中在drivers/of/目录下,有address.c,base.c,device.c,fdt.c,irq.c,platform.c等等 1,根据deice_node结构的full_name参数,在全局链表of_allnodes中,查找合适的device_node struct device_node *of_find_node_by…

概率/期望dp

思维方式 概率/期望dp都是分析从当前状态能否去到其他情况,然后进行期望/概率公式的运算,最后消元推导出一般式。 ​​​​​​Problem - 4089 (hdu.edu.cn) 思路:概率dp,正推 分类讨论,设dp[i][j]表示i人的队伍在…

力扣sql中等篇练习(八)

力扣sql中等篇练习(八) 1 确认率 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 分别统计没确认的用户和已经确认了的用户 SELECT s.user_id,ROUND(SUM(IF(c.actionconfirmed,1,0))/count(*),2) co…

GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例应用

如今,Earth Engine凭借其强大的功能正受到越来越多国内外科技工作者的关注,应用范围也在不断扩大。学习致力于帮助科研工作者掌握Earth Engine的实际应用能力,以Python编程语言为基础,结合实例讲解平台搭建、影像数据分析、经典应…

JAVA开发(H5商城嵌套到第三方H5商城进行异业合作方案)

需求背景: 很多电商网站或者说是购物网站都是H5商城的方式,每个公司都有自己的H5商城。当公司和公司之间进行异业合作,商城互相导流甚至商城聚合时就需要H5商城和H5商城的嵌套和对接。假如存在A商城和B商城,现在需要B商城入驻到A商…

CrackMapExec 域渗透工具使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、CrackMapExec 是什么?二、简单使用1、获取帮助信息2、smb连接执行命令3、使用winrm执行命令(躲避杀软)4、smb 协议常用枚…

Binder 驱动结构体列表

下面列举 Binder 驱动相关的一些重要结构体 6~9 用于数据传输相关,其中 binder_write_read,binder_transaction_data进程空间和内核空间是通用的。 BWR 核心数据图表 binder_write_read 是整个 Binder IPC 过程,最为核心的数据结构之一 3.…

品牌推广:如何让品牌在市场中保持活力并吸引更多的年轻人?

在如今这个竞争激烈的市场环境中,让品牌年轻化已经成为了许多企业追求的目标。随着社会的不断发展和进步,消费者的需求和心理也在不断变化。因此,如果一个品牌想要在市场中保持活力并吸引更多的年轻人,就必须思考如何让品牌年轻化…