文章目录
- 1. 原始质心定位算法
- 2. 基于RSSI的加权质心定位算法基本思想
- 3. 基于RSSI的加权质心定位算法流程图
- 4. 部分代码展示
- 5. 运行结果展示
- 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=1nwi∑i=1nwixi,∑i=1nwi∑i=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=1ndi1∑i=1ndi1xi,∑i=1ndi1∑i=1ndi1yi)(2)
3. 基于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. 资源获取
A资源获取说明