基于位置指纹匹配的定位算法

写在前面:毕业设计做的 基于WAF模型的位置指纹室内定位系统研发,用到了KNN、WKNN、EWKNN算法用于 在线定位阶段
算法相关原理及计算方法
加权K近邻算法(WKNN)

加权K近邻算法(WKNN)是在K近邻算法上的进一步优化,它引入权重,使得在计算定位结果时需要考虑得到的K个最相似指纹数据在估计定位结果时的一个贡献大小。通常来说,距离越大,说明这个位置指纹点离定位点越远,那么它对于定位结果的贡献应该越小。

在此基础上,采用基于权重的方式,处理最后的K个最相似指纹数据的位置坐标,这样计算出来的定位结果比直接取平均值得到的定位结果会更加符合实际,所以定位精度也会较高。WKNN的计算思路如下:

首先,同KNN算法一样,需要计算定位点的指纹数据和位置指纹点的指纹数据之间的欧氏距离,然后根据欧氏距离的大小,对数据进行从小到大排序。排序完成后,选取K个最相近的位置指纹用于定位点坐标的计算。最后,定位点的坐标是根据K个位置指纹的相似程度给予一定的权值计算结果,计算公式如下:

(x,y)=∑i=1k1Di+ε∑i=1k1Di+ε(xi,yi)(\mathrm{x}, y)=\sum_{i=1}^{k} \frac{\frac{1}{D_{i}+\varepsilon}}{\sum_{i=1}^{k} \frac{1}{D_{i}+\varepsilon}}\left(x_{i}, y_{i}\right) (x,y)=i=1∑k​∑i=1k​Di​+ε1​Di​+ε1​​(xi​,yi​)

其中, 表示定位点的坐标,即定位结果。 表示K个最相近的位置指纹数据的坐标, 表示欧氏距离, 代表一个很小的正整数,可以根据需要自行定义,作用是避免取距离的倒数时出现分母为零的情况。

WKNN算法的流程如下表所示。

Step1: 计算每个位置指纹数据与定位点数据之间的欧氏距离,计算公式如下: D=∑i=1n(rssii−rssi‾i)2D=\sqrt{\sum_{i=1}^{n}\left(r s s i_{i}-\overline{r s s i}_{i}\right)^{2}}D=i=1∑n​(rssii​−rssii​)2​ 其中, 表示定位点上采集到的第i个AP的RSSI值, 表示位置指纹数据中第i个AP多次采集的RSSI平均值。
Step2: 对欧氏距离进行从小到大排序。
Step3: 选取距离最近的K个位置指纹数据,取距离的倒数进行加权,计算定位点的位置坐标。
增强加权K近邻算法(EWKNN)

以上算法的不足之处是K为固定值。如果将K值固定来进行计算,会将距离偏离待定位点较远的参考点也计入计算权重。EWKNN通过加入阈值R0进行筛选的过程。

在WKNN的基础上,选取出Di值小于阈值R0的参考点,假设个数为G,将G个欧式距离值Di值由小到大排序,定义Li等于D1和Ds(s=2,3,…,G)的差值,那么Li的平均值为:
E(L)=L2+L3+…+LGG−1E(L)=\frac{L_{2}+L_{3}+\ldots+L_{G}}{G-1} E(L)=G−1L2​+L3​+…+LG​​
LiE(L)进行比较,把Li中大于平均值E(L)的剔除,剩余的参考点个数为K,将这K个参考点运用WKNN算法解算出待定位点的位置坐标。即可实现了动态的选择K值即参考点的个数。若匹配的不同参考点的APs信号强度与待定位点的APs信号强度欧式距离Di均小于阈值,则EWKNN即为WKNN。

EWKNN算法的流程如下表所示:

Step1: 计算每个位置指纹数据与定位点数据之间的欧氏距离,计算公式如下: D=∑i=1n(rssii−rssi‾i)2D=\sqrt{\sum_{i=1}^{n}\left(r s s i_{i}-\overline{r s s i}_{i}\right)^{2}}D=i=1∑n​(rssii​−rssii​)2​ 其中, 表示定位点上采集到的第i个AP的RSSI值, 表示位置指纹数据中第i个AP多次采集的RSSI平均值。
Step2: 选择阈值R0,得到距离小于R0的集合。
Step3: 排序,求平均距离,保留参考点的距离小于平均距离的最终集合。
Step3: 选取最终集合中的位置指纹数据,取距离的倒数进行加权,计算定位点的位置坐标。
算法举例

KNN:算欧氏距离,找出其中K个较小的值,如D1,D2,D5,D6

得到坐标:
X=X1+X2+X5+X64X=\frac{X_{1}+X_{2}+X_{5}+X_{6}}{4} X=4X1​+X2​+X5​+X6​​
Y=Y1+Y2+Y5+Y64Y=\frac{Y_{1}+Y_{2}+Y_{5}+Y_{6}}{4} Y=4Y1​+Y2​+Y5​+Y6​​

WKNN:算欧氏距离,找出其中K个较小的值,如D1,D2,D5,D6

计算权重:

w1=1D11D1+1D2+1D5+1D6w_{1}=\frac{\frac{1}{D_{1}}}{\frac{1}{D_{1}}+\frac{1}{D_{2}}+\frac{1}{D_{5}}+\frac{1}{D_{6}}} w1​=D1​1​+D2​1​+D5​1​+D6​1​D1​1​​
w2=1D21D1+1D2+1D5+1D6w_{2}=\frac{\frac{1}{D_{2}}}{\frac{1}{D_{1}}+\frac{1}{D_{2}}+\frac{1}{D_{5}}+\frac{1}{D_{6}}} w2​=D1​1​+D2​1​+D5​1​+D6​1​D2​1​​

得到坐标:
X=X1∗W1+X2∗w2+X5∗w5+X6∗w6X=X_{1^{*} W_{1}}+X_{2^{*}} w_{2}+X_{5^{*}} w_{5}+X_{6^{*}} w_{6} X=X1∗W1​​+X2∗​w2​+X5∗​w5​+X6∗​w6​
Y=Y1∗W1+Y2∗w2+Y5∗w5+Y6∗w6Y=Y_{1^{*} W_{1}}+Y_{2^{*}} w_{2}+Y_{5^{*}} w_{5}+Y_{6^{*}} w_{6} Y=Y1∗W1​​+Y2∗​w2​+Y5∗​w5​+Y6∗​w6​
EWKNN:算欧氏距离,选择阈值D,将大于D的参考点去掉,如去除D3,D4,D7,D8

计算平均距离:E1=D2−D1,E2=D5−D1,E3=D6−D1E_{1}=D_{2}-D_{1},E_{2}=D_{5}-D_{1},E_{3}=D_{6}-D_{1}E1​=D2​−D1​,E2​=D5​−D1​,E3​=D6​−D1​
E(D)=E1+E2+E34−1E(D)=\frac{E_{1}+E_{2}+E_{3}}{4-1}E(D)=4−1E1​+E2​+E3​​

去除大于E(D)的值D6,对D1,D2,D5进行计算。

计算权重:
w1=1D11D1+1D2+1D5+1D6w_{1}=\frac{\frac{1}{D_{1}}}{\frac{1}{D_{1}}+\frac{1}{D_{2}}+\frac{1}{D_{5}}+\frac{1}{D_{6}}} w1​=D1​1​+D2​1​+D5​1​+D6​1​D1​1​​
w2=1D21D1+1D2+1D5+1D6w_{2}=\frac{\frac{1}{D_{2}}}{\frac{1}{D_{1}}+\frac{1}{D_{2}}+\frac{1}{D_{5}}+\frac{1}{D_{6}}} w2​=D1​1​+D2​1​+D5​1​+D6​1​D2​1​​

得到坐标:
X=X1+X2+X5+X64X=\frac{X_{1}+X_{2}+X_{5}+X_{6}}{4} X=4X1​+X2​+X5​+X6​​
Y=Y1+Y2+Y5+Y64Y=\frac{Y_{1}+Y_{2}+Y_{5}+Y_{6}}{4} Y=4Y1​+Y2​+Y5​+Y6​​
在KNN、WKNN、EWKNN三种算法中,EWKNN算法性能是最好的;指纹间距越小,定位精度越高,同时工作量也越大。AP点个数在两个以上定位误差的变化不大,可根据室内环境大小选择,同时WiFi接入点的安装位置应避免使室内环境形成一个完全对称的网络环境。

基于位置指纹匹配的定位算法相关推荐

  1. android 网络wifi定位服务器,基于位置指纹算法的Android平台WiFi定位系统

    近年来,随着城域无线基础网络的发展,热点(AP)的覆盖范围已大大增加. 由于对定位服务的需求增加以及WiFi应用的扩展,WiFi定位已成为一种有效的定位方法. GPS卫星定位是最重要的定位方法. 它需 ...

  2. rssi定位算法 c语言,【论文※】An RSSI Gradient-based AP Localization Algorithm 基于RSSI梯度的AP定位算法...

    摘要:Recent rapid rise of indoor location based services for smartphones has further increased the imp ...

  3. TensorFlow练习6: 基于WiFi指纹的室内定位(autoencoder)

    本帖基于论文:Low-effort place recognition with WiFi fingerprints using Deep Learning 室内定位有很多种方式,利用WiFi指纹就是 ...

  4. matlab立体坐标定位_【半导光电】基于光电探测器的激光章动定位算法(二)

    今日光电        有人说,20世纪是电的世纪,21世纪是光的世纪:知光解电,再小的个体都可以被赋能.欢迎来到今日光电! ----与智者为伍 为创新赋能---- 1. 章动定位算法实验前,首先需要 ...

  5. rssi室内定位算法原理_基于RSSI的精确室内定位算法

    基于 RSSI 的精确室内定位算法 何山 [期刊名称] <现代电信科技> [年 ( 卷 ), 期] 2011(000)003 [摘要] 无线传感器网络的关健问题是实现节点的精确定位 . 为 ...

  6. 【定位问题】基于RSSI均值的等边三角形定位算法matlab系统

    1 简介 为了提高无线传感网络的定位精度从提高测量精度.改善信标N点分布的角度提出了一种基于RSSI均值的等边三角形定位算法.该算法引入信号强指( RSSI)敏感区和非敏感区概念采用高斯模型对非敏感区 ...

  7. 终于开源!基于Overlap的激光雷达全局定位算法!

    今天向大家介绍德国波恩大学 StachnissLab 的 Xieyuanli Chen 最新的开源算法. 本次介绍的论文题目: Learning an Overlap-based Observatio ...

  8. 【目标定位】基于matlab粒子滤波的定位算法【含Matlab源码 2161期】

    一.基于粒子滤波污染源定位简介 粒子滤波定位算法是目前最精准定位可移动物体的位置,由于水域的流动,工业固体废物污染源很可能随着水流移动位置,基于粒子滤波算法将污染物定位分为预测.测量以及重新采样可大大 ...

  9. 基于麦克风阵列的声源定位算法之GCC-PHAT

    目前基于麦克风阵列的声源定位方法大致可以分为三类: 基于最大输出功率的可控波束形成技术 基于高分辨率谱图估计技术和基于声音时间差(time-delay estimation,TDE). 基于TDE的算 ...

最新文章

  1. 与有利集团总公司,同携手•共辉煌
  2. 信息系统项目管理师案例考试汇总(2005~2021年)
  3. CentOS 7 下安装 mysql ,以及用到的命令
  4. MIPI参数配置解释
  5. Multiple Dispatch
  6. java jpa saveall方法优化_JPA批量插入(saveAll)
  7. C语言 函数值传递和址传递 - C语言零基础入门教程
  8. 隐藏元素 mayaa
  9. SSO单点登录之同域登录的实现
  10. Kotlin中定义编译时常量
  11. java configuration类_使用@Configuration编写自定义配置类
  12. python 的for与while 的i改变
  13. 地形瓦片地图TiledMap AutoTiles自动图块
  14. Schlumberger.SPAN.Rock.v9.1.5 1CD跨度岩石强调岩石射孔分析软件
  15. Android4.0.4 framebuffer 支持32位色彩深度
  16. 融云出海洞察,海外社交市场地区篇
  17. matlab 读取midi,matlab miditoolbox中的midi文件生成函数的改进
  18. Ubuntu 台式机 usb WiFi 接收器设置方法
  19. 报错:Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.
  20. 微信小程序实现举报功能

热门文章

  1. 图/图的存储/图的遍历
  2. 微信小程序创建直播间流程
  3. 根据GPS定位得到的经纬度调用百度地图API在地图上标注
  4. php linux unoconv,Linux-CentOS 安装 Unoconv
  5. LTE网络有关系统消息(MIB/SIB)深度解析
  6. Xcode 常用编译选项设置
  7. 房租租赁租房系统都包含哪些功能?
  8. 微信聊天记录删除了怎么恢复?最简单快捷的恢复方式看这里
  9. python pdfminer的功能_python:pdfminer接口测试
  10. python虚拟机下载_虚拟机 python