一种联合灰色关联和神经网络的指纹定位方法与流程

文档序号:20991209发布日期:2020-06-05 21:43阅读:280来源:国知局
一种联合灰色关联和神经网络的指纹定位方法与流程

本发明属于信号处理技术领域;具体涉及一种联合灰色关联和神经网络的指纹定位方法。



背景技术:

指纹定位方法是根据预先存储在数据库中的待测区域内测量的一系列参考点的位置信息以及相应的信号强度信息来进行定位。在进行位置指纹定位时首先要通过在离线阶段在待测区域内选择一些参考点,这些参考点较均匀地分布在待测区域中,记录这些参考点的位置信息并测量在这些点上接收来自各个无线信号发送设备(ap)的信号强度,将测量得到的信号强度信息以及位置进行记录并存储到指纹数据库中,也就是所谓的radiomap。然后在在线阶段对测试点进行定位时,首先需要获取该测试点获取到来自各个ap的信号强度,然后把信号强度值与指纹库中的数据进行对比和匹配,最终得到测试点的定位结果。

目前指纹定位在进行参考点匹配时所采用的最常用的算法为knn算法和wknn算法,这两种算法都需要利用欧式距离找到与测试点最近邻的几个参考点。但是由于ap设备发送无线信号的不稳定性,会导致测试点接收到的信号强度值(rss)有较大的波动,因此在进行最近邻点的选取时往往与实际测试点的位置偏差较大,导致最终的定位结果有较大的误差。此外,如果在离线阶段需要将大量的参考点的位置信息及信号强度信息存入到radiomap中,那么在线阶段在数据库中进行数据匹配时会花销较长的时间,会出现测试点的位置已经改变但是在线阶段还在解算前一时刻所在位置的情况,造成获取测试点定位结果的不实时性。因此,基于以上背景提出联合灰色关联和神经网络的指纹定位方法。

灰色关联的思想是根据因素之间发展趋势的相似或相异的程度,来进行因素间关联程度的衡量。在指纹定位中引入灰色关联的目的是把测试点采集到的rss值与参考点上的rss值的相似度转换为计算它们之间关联度的问题。在计算关联度时对每个ap的关联系数进行加权平均以削弱由于接收rss值的不稳定对匹配结果造成的影响,相比于传统的knn算法和wknn算法,采用灰色关联的思想得到更高的位置匹配精度。此外,利用关联度较大的几个参考点所构成的区域进行神经网络的训练,那么当测试点在该区域中时,利用训练出的神经网络求出此时测试点的位置坐标,而不需要对所有的参考点进行匹配,缩短匹配的时间,实现实时定位。



技术实现要素:

本发明采用联合灰色关联度以及神经网络的方法,灰色关联度对系统的发展态势进行了分析和比较,通过参考序列与比较序列各点之间的距离分析来确定各序列之间的接近性和差异性。

本发明通过以下技术方案实现:

一种联合灰色关联和神经网络的指纹定位方法,所述方法包括如下步骤:

步骤1:将在离线阶段从参考点i上采集到的来自各个ap的rss值记为比较序列,将在在线阶段从测试点采集到的来自各个ap的rss值记为待比较序列,将待比较序列与所有参考点上的比较序列构成比较矩阵,对比较矩阵中到的所有元素进行均值化处理,即把每一个元素除以该元素所在列的均值,处理后保留各变量取值差异后的信息,得到新的均值矩阵;

步骤2:将从步骤1得到的均值矩阵中从第二列开始每一列的元素分别减去第一列对应的元素后取绝对值,得到关联矩阵;

步骤3:将处理结果进行更新得到关联系数矩阵;

步骤4:根据关联系数矩阵计算关联度,将求出的关联度进行由小到大的排序,选择关联度最小的5个参考点分别记做d1(x1,y1,z1)、d2(x2,y2,z2)、d3(x3,y3,z3)、d4(x4,y4,z4)、d5(x5,y5,z5),以d1作为圆点,该圆的半径r为d1到其余4个点距离的最大值,将此圆所包含的所有参考点都作为bp神经网络的训练集;

步骤5:训练好的神经网络适用于在区域内所有测试点的位置解算,将当前时刻在测试点处接收到来自各个ap的rss值放入已经训练好的bp神经网络中,得到的结果即为计算出的该测试点的位置坐标;

步骤6:当测试点改变时,首先利用新测试点获取到的rss值带入到上面训练好的神经网络中去,得到新的位置坐标,计算该位置距离该区域内圆心的距离d;

步骤7:若d<r说明此时测试点仍在该区域内,所得到的位置坐标是正确的;若d>r说明此时测试点已经离开该区域,需要重复步骤1到步骤5进行新的坐标位置解算。

进一步的,所述步骤1中,将在离线阶段从参考点i上采集到的来自各个ap的rss值记为比较序列:

其中,代表在参考点i上接收到来自第j个ap的rss值,

将在在线阶段从测试点采集到的来自各个ap的rss值记为待比较序列:

s0=[rss1,rss2,...,rssm]t

其中,rssj(j=1,...,m)代表在测试点上接收到来自第j个ap的rss值,

将待比较序列与所有参考点上的比较序列构成比较矩阵:

s=[s0,s1,s2,...,sn]

对比较矩阵中到的所有元素进行均值化处理,即把每一个元素除以该元素所在列的均值,处理后保留各变量取值差异后的信息,得到新的均值矩阵:

进一步的,所述步骤2中,将均值矩阵中从第二列开始每一列的元素分别减去第一列对应的元素后取绝对值,得到关联矩阵:

h=[h1,h2,...,hn]

其中,为关联矩阵h中的第j行第i列元素;

找出所有中的最大值hmax和hmin,将关联矩阵中的每一个元素进行如下处理:

其中,ρ为分辨系数,用来调整比较环境的大小。

进一步的,所述步骤3中,将处理结果进行更新得到关联系数矩阵:

δ=[δ1,δ2,....,δn]

其中,为关联系数矩阵,每一个元素称为关联系数;

计算关联度:

其中,ωi表示第i个参考点的权值,为第i个参考点关联系数的均值占所有参考点关联系数的均值的比例:

进一步的,所述步骤4中,将求出的关联度进行由小到大的排序,选择关联度最小的5个参考点分别记做d1(x1,y1,z1)、d2(x2,y2,z2)、d3(x3,y3,z3)、d4(x4,y4,z4)、d5(x5,y5,z5);则d2、d3、d4、d5与d1的距离为:

以d1作为圆点,该圆的半径r为d1到其余4个点距离的最大值:

r=max{r21,r31,r41,r51}

将此圆所包含的所有参考点都作为bp神经网络的训练集,训练集的rss是输入层,相对应的位置坐标是输出层,最终经过训练后得到神经网络输入层与输出层的关系:

y=w·x+b

其中,x=[rss1,rss2,...,rssm]t为测试点收到来自各个ap的rss矩阵,矩阵维数为m×1,w为权值矩阵,维数为3×m,b为偏置矩阵,维数为3×1,y为输出的坐标矩阵,维数为3×1。

本发明的有益效果是:

本发明在对测试点进行匹配的精度和速度上都进行了相应的改进。在进行指纹定位时,有m个无线信号发送设备(ap),有n个参考点。参考点的位置已知且经测量得到了来自每个ap的信号强度值,将每个测试点对应的位置信息和信号强度信息存入到指纹库中。在对测试点进行定位时,首先获取测试点上的rss值,并与指纹库中的rss值进行匹配,从而得到测试点的位置,指纹定位流程图如图1所示。在将测试点的rss值与指纹库进行匹配时,本发明采用联合灰色关联度以及神经网络的方法。其中灰色关联度对系统的发展态势进行了分析和比较,通过参考序列与比较序列各点之间的距离分析来确定各序列之间的接近性和差异性。

附图说明

图1本发明指纹定位流程图。

图2本发明位置解算流程图。

图3本发明寻找bp神经网络训练集示意图。

图4本发明定位误差仿真图。

具体实施方式

下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

一种联合灰色关联和神经网络的指纹定位方法,所述方法包括如下步骤:

步骤1:将在离线阶段从参考点i上采集到的来自各个ap的rss值记为比较序列,将在在线阶段从测试点采集到的来自各个ap的rss值记为待比较序列,将待比较序列与所有参考点上的比较序列构成比较矩阵,对比较矩阵中到的所有元素进行均值化处理,即把每一个元素除以该元素所在列的均值,处理后保留各变量取值差异后的信息,得到新的均值矩阵;

步骤2:将从步骤1得到的均值矩阵中从第二列开始每一列的元素分别减去第一列对应的元素后取绝对值,得到关联矩阵;

步骤3:将处理结果进行更新得到关联系数矩阵;

步骤4:根据关联系数矩阵计算关联度,将求出的关联度进行由小到大的排序,选择关联度最小的5个参考点分别记做d1(x1,y1,z1)、d2(x2,y2,z2)、d3(x3,y3,z3)、d4(x4,y4,z4)、d5(x5,y5,z5),以d1作为圆点,该圆的半径r为d1到其余4个点距离的最大值,将此圆所包含的所有参考点都作为bp神经网络的训练集;

步骤5:训练好的神经网络适用于在区域内所有测试点的位置解算,将当前时刻在测试点处接收到来自各个ap的rss值放入已经训练好的bp神经网络中,得到的结果即为计算出的该测试点的位置坐标;

步骤6:当测试点改变时,首先利用新测试点获取到的rss值带入到上面训练好的神经网络中去,得到新的位置坐标,计算该位置距离该区域内圆心的距离d;

步骤7:若d<r说明此时测试点仍在该区域内,所得到的位置坐标是正确的;若d>r说明此时测试点已经离开该区域,需要重复步骤1到步骤5进行新的坐标位置解算。

进一步的,所述步骤1中,将在离线阶段从参考点i上采集到的来自各个ap的rss值记为比较序列:

其中,代表在参考点i上接收到来自第j个ap的rss值,

将在在线阶段从测试点采集到的来自各个ap的rss值记为待比较序列:

s0=[rss1,rss2,...,rssm]t

其中,rssj(j=1,...,m)代表在测试点上接收到来自第j个ap的rss值,

将待比较序列与所有参考点上的比较序列构成比较矩阵:

s=[s0,s1,s2,...,sn]

对比较矩阵中到的所有元素进行均值化处理,即把每一个元素除以该元素所在列的均值,处理后保留各变量取值差异后的信息,得到新的均值矩阵:

进一步的,所述步骤2中,将均值矩阵中从第二列开始每一列的元素分别减去第一列对应的元素后取绝对值,得到关联矩阵:

h=[h1,h2,...,hn]

其中,为关联矩阵h中的第j行第i列元素;

找出所有中的最大值hmax和hmin,将关联矩阵中的每一个元素进行如下处理:

其中,ρ为分辨系数,用来调整比较环境的大小;优选的ρ=0.5。

进一步的,所述步骤3中,将处理结果进行更新得到关联系数矩阵:

δ=[δ1,δ2,....,δn]

其中,为关联系数矩阵,每一个元素称为关联系数;

计算关联度:

其中,ωi表示第i个参考点的权值,为第i个参考点关联系数的均值占所有参考点关联系数的均值的比例:

进一步的,所述步骤4中,将求出的关联度进行由小到大的排序,选择关联度最小的5个参考点分别记做d1(x1,y1,z1)、d2(x2,y2,z2)、d3(x3,y3,z3)、d4(x4,y4,z4)、d5(x5,y5,z5);则d2、d3、d4、d5与d1的距离为:

以d1作为圆点,该圆的半径r为d1到其余4个点距离的最大值:

r=max{r21,r31,r41,r51}

将此圆所包含的所有参考点都作为bp神经网络的训练集,示意图如图3所示,它们的rss是输入层,相对应的位置坐标是输出层。最终经过训练后得到神经网络输入层与输出层的关系:

y=w·x+b

其中,x=[rss1,rss2,...,rssm]t为测试点收到来自各个ap的rss矩阵,矩阵维数为m×1,w为权值矩阵,维数为3×m,b为偏置矩阵,维数为3×1,y为输出的坐标矩阵,维数为3×1。

实施例2

为了对比本发明提出的定位方法与传统的knn方法在进行指纹定位时的定位效果,进行了matlab仿真实验,首先验证定位精度指标,仿真结果如图4所示,由图中看到使用本发明提出的方法在进行指纹定位时定位误差控制在2m以内,而传统的knn方法的最大定位误差达到了10m,因此说明本发明提出的定位方法相比于传统的knn方法做到更精准的定位。其次验证定位一次目标所需要的时间,仿真结果如图4所示,左侧的时间为本发明提出的方法定位一次目标所需的时间,为0.001351s;右侧的时间为传统knn方法定位一次目标所需要的时间,为0.002942s。由此看到本发明提出的方法在进行目标定位时耗时更短。因此,通过对比仿真发现,本发明提出的位置指纹定位方法做到精准实时的定位,具有一定的应用性和价值。

定位耗时结果为:时间已过0.001351秒,时间已过0.002942秒。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1