【WSN定位】加权质心定位算法-Matlab代码

news2025/1/16 15:54:43

文章目录

    • 1. 质心定位算法
    • 2. 加权质心定位算法
    • 3. 部分代码展示
    • 4. 效果图展示
    • 5. 资源获取说明

摘要:质心定位算法(Centroid Algorithm)是 Nirupama Bulusu等提出的一种无需测距的粗精度定位算法。质心算法的基本思路:利用未知节点通信范围内的所有锚节点进行定位,将所有的锚节点根据其坐标连接起来形成多边形,多边形的几何中心即为未知节点的估计位置。

1. 质心定位算法

图1 质心定位算法原理图

图1 质心定位算法的原理图

如图所示,假设某未知节点 O ( x , y ) O(x,y) O(x,y)的通信范围内的锚节点坐标分别为 H 1 ( x 1 , y 1 ) H_{1}(x_{1},y_{1}) H1(x1,y1) H 2 ( x 2 , y 2 ) H_{2}(x_{2},y_{2}) H2(x2,y2) H 3 ( x 3 , y 3 ) H_{3}(x_{3},y_{3}) H3(x3,y3) H 4 ( x 4 , y 4 ) H_{4}(x_{4},y_{4}) H4(x4,y4) H 5 ( x 5 , y 5 ) H_{5}(x_{5},y_{5}) H5(x5,y5),通过公式(1)求解,可以得到未知节点的坐标:
( x , y ) = ( x 1 + x 2 + . . . + x n n , y 1 + y 2 + . . . + y n n ) (1) (x,y)=(\frac{x_{1}+x_{2}+...+x_{n}}{n}, \frac{y_{1}+y_{2}+...+y_{n}}{n})\tag{1} (x,y)=(nx1+x2+...+xn,ny1+y2+...+yn)(1)
注:锚节点是否在未知节点 O ( x , y ) O(x,y) O(x,y)通信范围内的判定标准为:如果锚节点 H n ( x n , y n ) H_{n}(x_{n},y_{n}) Hn(xn,yn)到未知节点 O ( x , y ) O(x,y) O(x,y)的距离小于 O ( x , y ) O(x,y) O(x,y)的通信半径,那么锚节点 H n ( x n , y n ) H_{n}(x_{n},y_{n}) Hn(xn,yn)就在未知节点 O ( x , y ) O(x,y) O(x,y)的通信范围内。

2. 加权质心定位算法

传统的质心算法在求解过程中只是将未知节点通信范围内所有锚节点的横、纵坐标对应相加取平均,并没有体现出不同位置的锚节点对未知节点的影响不同。因此,提出了加权质心定位算法,该方法综合考虑锚节点与未知节点的远近程度对未知节点的影响,给每个锚节点赋予不同的权值 w w w,以此来提高未知节点的坐标精确度。具体实现如下:

  1. 首先根据公式(2)计算出 H 1 H_{1} H1 H 2 H_{2} H2 H n H_{n} Hn n n n个锚节点各自的权重: w 1 w_{1} w1 w 2 w_{2} w2 . . . ... ... w n w_{n} wn
    w n = 1 d n (2) w_{n} =\frac{1}{d_{n} } \tag{2} wn=dn1(2)
  2. 然后结合公式(1)赋予每个锚节点相应的权重,得到公式(3):
    ( x , y ) = ( x 1 w 1 + x 2 w 2 + . . . + x n w n ∑ i = 1 n w i , y 1 w 1 + y 2 w 2 + . . . + y n w n ∑ i = 1 n w i ) (3) (x,y)=(\frac{x_{1}w_{1}+x_{2}w_{2}+...+x_{n}w_{n}}{\sum_{i=1}^{n}w_{i}}, \frac{y_{1}w_{1}+y_{2}w_{2}+...+y_{n}w_{n}}{\sum_{i=1}^{n}w_{i}})\tag{3} (x,y)=(i=1nwix1w1+x2w2+...+xnwn,i=1nwiy1w1+y2w2+...+ynwn)(3)

改进后的公式,对于离未知节点更近的锚节点,其被赋予的权重更高,在公式(3)中所占的比重更高,在对未知节点坐标估算中的贡献也就越大。

3. 部分代码展示

% 画出每个待定位节点与所属于的质心的距离,以绿线表示
h5=plot([cent(1,j) Sx(j)],[cent(2,j) Sy(j)],'b');
hold on
%画出每个待定位节点与所属于的加权质心的距离,以红线表示
h6=plot([centx(1,j) Sx(j)],[centx(2,j) Sy(j)],'r');
hold on
title('质心与加权质心定位结果对比')
legend([h1,h2,h3,h4],'锚节点','待定位节点','质心定位','加权质心定位')

% 求出每个待定位节点的定位误差
% SS是待定位节点的真实坐标,MM是质心定位结果坐标,NN是加权质心定位结果坐标
MM=[cent(1,j);cent(2,j)];
e(j)=norm((MM-SS),2)/dm;
NN=[centx(1,j);centx(2,j)];
err(j)=norm((NN-SS),2)/dm;
end

figure(2)
axis([0 n 0 10])
% 绿线表示质心与实际位置的误差
plot(e,'-g.')
hold on
% 红线表示加权质心与实际位置的误差
plot(err,'-r.')
hold on
title('质心与加权质心的定位误差对比')
legend('质心','加权质心')

E=sum(e)/n;
ERR=sum(err)/n;
display(['质心定位算法的平均误差为: ', num2str(E)]);
display(['加权质心定位算法的平均误差为: ', num2str(ERR)]);

4. 效果图展示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 资源获取说明

A资源获取说明

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

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

相关文章

树莓派下编译 PyMiniRacer

文: fasiondog 因需要在树莓派(及其其他各类派)下使用 akshare,但 akshare 的依赖库 PyMiniRacer 缺少 arm64 架构的包(该包已经不再维护),故在此记录下在 linux arm64 架构下编译 PyMiniRacer 的过程。有…

【微信小程序】 权限接口梳理以及代码实现

​ 1、权限接口说明 官方权限说明   部分接口需要经过用户授权统一才能调用。我们把这些接口按使用范围分成多个scope,用户选择对scope进行授权,当授权给一个scope之后,其对应的所有接口都可以直接使用。 此类接口调用时: 如…

小红书报告:2023美妆个护白皮书解读

导语 面对风云变幻的市场,消费行业始终是增长的重要引擎之一,其中美妆个护行业在过去六年里(2016-2022年)仍保持高增速与消费潜力 。 新的一年,市场呈现什么新变化,品牌又有哪些新动作?本期为…

20-HTML

目录 1.概念 2.创建HTML页面 3.运行HTML程序 4.HTML结构 4.1.HTML文件基本结构 4.2.标签层次结构 PS:开发者工具简单介绍 PS:快速生成代码框架: 5.HTML常见标签 5.1.注释标签 5.2.标题标签:h1 - h6 5.3.段落标签&…

Doris(8):数据导入(Load)之Insert Into

Insert Into 语句的使用方式和 MySQL 等数据库中 Insert Into 语句的使用方式类似。但在 Doris 中,所有的数据写入都是一个独立的导入作业。所以这里将 Insert Into 也作为一种导入方式介绍。 主要的 Insert Into 命令包含以下两种; INSERT INTO tbl S…

PX4控制云台的两种方式

1、配置MNT_MODE_IN参数后重启飞控,释放出mount的设置参数 控制信号输入为RC 则接收机必须连接对应的通道至AUX辅助通道,并通过MNT_MAN_*参数设置pitch/roll/yaw对应的AUX通道 (遥控器摇杆 → 接收机通道输出 → 飞控AUX通道输入 → AUX通道…

Spring IOC 入门简介【自定义容器实例】

目录 前言 Spring简介 Spring体系结构 一、IOC控制反转思想 二、IOC自定义对象容器 1. 创建实体类,Dao接口,实现类 2. 创建配置文件bean.properties 3. 创建容器管理类 4. 创建StudentService类 5. 测试方法 6. 测试结果 前言 Spring简介 Spr…

Android 详解基本布局以及ListView和RecyclerView

前言 一个丰富的界面有很多个控件组成,那么就需要布局来实现控件有条不紊的摆放。 一 LinearLayout 线性布局 LinearLayout 又称作线性布局,是一种常用的布局。有横向和竖向两个方向。 通过下面的属性进行设置 android:orientation"vertical"…

【科研】Michaelis–Menten 曲线(米氏曲线)中反应速率的计算

参考文献:Standardized assays for determining the catalytic activity and kinetics of peroxidase-like nanozymes | Nature Protocols SCI-Hub链接: https://sci-hub.se/10.1038/s41596-018-0001-1 科研需要,需要绘制所制备纳米酶的Mi…

亿发软件:中小企业定制一体化管理解决方案,全面提升数据价值

亿发软件:中小企业定制一体化管理解决方案,全面提升数据价值 一体化信息管理系统是为中小企业提供简化运营、提高效率和生产力的工具。随着经济的快速发展,企业细分管理的多样化需求显著增加。很多企业都在为找不到适合自己的一体化信息管理…

一文看懂数据云平台的“可观测性”技术实践

背景 这是一家大型制造集团。为监控及预测工厂设备运行情况,IT部门在数据云平台DataSimba上按天执行数据作业,每24小时对工厂设备的日志数据进行分析,发现能对业务起到很好的辅助作用,效果不错。 “要不升级为每1个小时跑一次&am…

android hook(Toast BadTokenException案例)

什么是Hook? hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序先捕捉该消息,钩子函数先得到控制权,这时钩子函数即可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。…

(详细)HTTP协议(应用层重点协议)

目录 一、HTTP协议工作过程 二、 协议格式 1、抓包工具Fiddler 2、HTTP请求格式 3、HTTP响应格式 4、HTTP协议格式总结 三、HTTP请求(Request) 1、URL (1)URL基本格式 (2)URL实例 (…

什么是伪原创?SEO伪原创该怎么做

伪原创是指在原有的文章或内容基础上进行修改或调整,以产生看起来是全新内容的文章,但实际上并没有创造新的价值。多数情况下,伪原创的目的是为了在文章相对原创的情况下,提高搜索引擎的排名。 一、高质量伪原创 做好伪原创&#…

SpringCloud消息总线——Bus

Bus 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 在SpringCloud Config学习过程中,还遗留下来一个问题:当运维更新git上的配置信息时,要想更改所有的客户端服务,必须得手动给客户端服务发送post请…

ESP32学习笔记14-mqtt-连接官方mqtt,onenet,thingsboard物联网平台

12.MQTT 12.0工程里的WiFi密码和ssid设置 工程的WiFi配置 ssid password 打开配置 配置ssid和密码 工程配置文件sdkconfig IP和端口配置 乐鑫服务器mqtt 12.1数据结构和配置函

力扣sql中等篇练习(四)

力扣sql中等篇练习(四) 1 游戏玩法分析IV 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 首次登录后第二天登录的玩家数量/玩家总数量(去重) # 注意首日注册指的是表中的最早的一个日期 SELECT ROUND((SELECT count(distinct t1.player_id)FRO…

给孩子买台灯什么牌子好?盘点学生专用台灯第一品牌

现在的孩子近视率很高,双减政策的执行,也有导致许多孩子长时间接触电子产品,没有正确的看书姿势,合理的用眼距离等,使用专业的护眼台灯,能让孩子眼睛拥有一个好的视力。 要注意养成预防近视好习惯&#xf…

dsp28335杂记3

文章目录 DAC实验,SPITLV5620DACADC0实验-------niceDMAADC实验(外设到存储器) 中断 了解皮毛,嘿嘿内置XINTF接口配置 外扩SRAM DMA支持 了解皮毛,嘿嘿eCAP脉冲捕获,重点啦eCAP输出PWM(APWM模…

【学习笔记】从MySQL快速入门 PostgreSQL

PGSQL 菜鸟教程/在线api文档 数据类型语法 DML条件 高级 一、数据类型 数值类型:和mysql类似,叫法不同 特殊:serial 自增整数 名字存储长度描述范围smallint2 字节小范围整数-32768 到 32767integer4 字节常用的整数-2147483648 到 21474…