【WSN定位】基于RSSI的加权质心定位算法【Matlab代码#14】


获取资源请见文章第6节:资源获取】


1. 原始质心定位算法

可参考质心定位算法

2. 基于RSSI的加权质心定位算法基本思想

传统的质心算法在求解过程中只是将未知节点通信范围内所有锚节点的坐标对应相加取平均,并没有体现出不同位置的锚节点对未知节点的影响不同,也并没有充分利用未知节点收到的来自其邻居节点发送来的数据包的信息。因此,可以在无线信号 RSSI 及其模型的基础上综合考虑锚节点与未知节点的远近程度对未知节点的影响,给每个锚节点赋予不同的权值 w w w,以此来提高未知节点的坐标精确度,如公式(1)所示:
( x , y ) = ( ∑ i = 1 n w i x i ∑ i = 1 n w i , ∑ i = 1 n w i y i ∑ i = 1 n w i ) (1) (x,y)=(\frac{\sum_{i=1}^{n}w_{i}x_{i}}{\sum_{i=1}^{n}w_{i}}, \frac{\sum_{i=1}^{n}w_{i}y_{i}}{\sum_{i=1}^{n}w_{i}})\tag{1} (x,y)=(i=1nwii=1nwixi,i=1nwii=1nwiyi)(1)
其中, x x x是待定位节点的横坐标, y y y是待定位节点的纵坐标, w i w_{i} wi是对应的权值。权值该如何选取呢?根据理论知识和实验可知,RSSI 的值随着距离的增大而减少,即锚节点距离未知节点近的 RSSI 值高,反之 RSSI 值低,但是若直接用 RSSI 值作为权值会不容易使人理解。因此,可以利用 RSSI-d 距离转换公式将 RSSI 值转换成对应的距离 d i d_{i} di,将距离未知节点近的锚节点其距离值所占的权重大,反之,占的权重小,所以令 w i = 1 d i w_{i}=\frac{1}{d_{i}} wi=di1

基本思想是:将接收到的信号强度 RSSI 转换为传输距离 d d d,距离 d d d越大对未知节点影响越小,距离 d d d越小对未知节点的影响越大,与距离成反比,因此权值取 1 d i \frac{1}{d_{i}} di1,再将权值加到传统的质心算法中形成了基于 RSSI 测距的加权质心定位算法。基于 RSSI 测距的加权质心位算法的公式如下:
( x , y ) = ( ∑ i = 1 n 1 d i x i ∑ i = 1 n 1 d i , ∑ i = 1 n 1 d i y i ∑ i = 1 n 1 d i ) (2) (x,y)=(\frac{\sum_{i=1}^{n}\frac{1}{d_{i}}x_{i}}{\sum_{i=1}^{n}\frac{1}{d_{i}} }, \frac{\sum_{i=1}^{n}\frac{1}{d_{i}}y_{i}}{\sum_{i=1}^{n}\frac{1}{d_{i}}})\tag{2} (x,y)=(i=1ndi1i=1ndi1xi,i=1ndi1i=1ndi1yi)(2)

3. 基于RSSI的加权质心定位算法流程图

在这里插入图片描述

图1 基于RSSI测距的加权质心定位算法

4. 部分代码展示

% 以dm为半径,寻找每个待定位节点周围的锚节点
for i=1:1:m
d=norm((xy(:,i)-SS),2);
    if d<=dm
        % xy是锚节点坐标矩阵,是一个2行m列的矩阵,所有横坐标为第一行,纵坐标为第二行
        % xx(j,i)表示第j个待定位节点的第i个锚节点的横坐标,yy(j,i)表示第j个待定位节点的第i个锚节点的纵坐标
        for jj = 1:threshold
            d_rssi(jj)=rssi_distance(d);
        end
        q(j,i)=1/d;
        xx(j,i)=xy(1,i);
        yy(j,i)=xy(2,i);
        k=k+1;
    else
        q(j,i)=0;  
        xx(j,i)=0;
        yy(j,i)=0;
    end
end

5. 运行结果展示

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

6. 资源获取

可以获取完整代码资源。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天`南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值