[发明专利]物联网感知数据状态矢量提取及表示方法有效
申请号: | 201611254734.8 | 申请日: | 2016-12-30 |
公开(公告)号: | CN107038204B | 公开(公告)日: | 2019-05-03 |
发明(设计)人: | 丁治明;任付杰;才智;陈军成;段立娟;曹阳 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06F16/953 | 分类号: | G06F16/953;G06F16/9537 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 沈波 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 联网 感知 数据 状态 矢量 提取 表示 方法 | ||
1.物联网感知数据状态矢量提取及表示方法,其特征在于:步骤一:设计状态矢量函数,对二维感知数据进行状态矢量提取;
步骤1.1:对某监控对象obj的采样值分量C1数据进行矢量活动的提取,首先处理接收到的采样数据的前三个采样点;
当接收到第一个采样数据P1(t1,y1)时,定义采样点数据类型变量Pep,将P1赋值给Pep,当接收到第二个采样数据P2(t2,y2)时,用Pep和P2两个数据点构造一阶贝塞尔曲线的状态矢量函数,将矢量函数存储在List[0],List[]为ArrayList<Function>类型,Function为自定义的存储状态矢量的类,并存储起始时间;定义采样点数据类型变量Pmp,将Pep赋值给Pmp,P2赋值给Pep;当接收第三个采样数据点P3(t3,y3)时,将t3带入当前矢量活动List[0]矢量函数中,求出相应的y值,然后将y与y3比较,如果差值都小于域值u(u为根据实际情况定义的double值),不需要更新矢量函数,只需将Pep赋值给Pmp,P3赋值给Pep;否则,将t2上传存储在矢量活动List[0]中,标记为矢量活动结束时间,将Pmp、Pep和P3三点利用控制点生成算法求两个控制点p00和p01,用Pep、p01和P3三个数据点提取状态矢量函数,把矢量函数存储在List[1]中,t2为该矢量活动开始时间,存储在矢量活动List[1]中,将Pep赋值给Pmp,P3赋值给Pep;定义控制点数据类型变量Pcp,将p01赋值给Pcp;
步骤1.2:接收采样数据点Pn(tn,yn)(n>3),将Pn与当前矢量活动比对;
获取采样数据点Pn的前一个数据点Pn-1所在的当前矢量活动List[m](m<n-1)中的矢量函数阶数,如果是一阶函数转步骤1.2.1,如果是二阶函数转步骤1.2.2,否则转步骤1.2.3;
步骤1.2.1:将tn带入前一个数据点Pn-1所在的矢量函数中,求出相应的y值,比较yn与y大小,如果差值小于域值u,则将Pep赋值给Pmp,Pn赋值给Pep;否则,存储矢量活动List[m]的终止时间tn-1,利用控制点生成算法求Pmp、Pep和Pn三点的控制点p00和p01,以Pep为起点,Pn为终点,p01为控制点提取矢量函数,把矢量函数存储在矢量活动List[m+1]中,存储矢量活动开始时间tn-1,将Pep赋值给Pmp,Pn赋值给Pep,将p01赋值给Pcp;
步骤1.2.2:利用控制点生成算法求Pmp、Pep和Pn三个数据点的控制点p00和p01,以Pmp为起点,Pep为终点,Pep和p00为控制点提取三阶贝塞尔函数,将此函数更新为当前矢量函数;在差值允许小于阈值条件下判断Pn是否在当前矢量函数上,如果存在,将Pep赋值给Pmp,Pn赋值给Pep,p01赋值给Pcp;否则,存储矢量活动List[m]的终止时间tn-1,以Pep为起点,Pn为终点,p01为控制点构造二阶贝塞尔曲线状态矢量函数,将此状态矢量函数存储在List[m+1]中,存储矢量活动List[m+1]的开始时间tn-1,将Pep赋值给Pmp,Pn赋值给Pep,p01赋值给Pcp;
步骤1.2.3:在差值允许小于阈值u条件下判断Pn是否在矢量函数上,如果存在,将Pep赋值给Pmp,Pn赋值给Pep;否则,存储矢量活动List[m]的终止时间tn-1,使用控制点生成算法求Pmp、Pep和Pn三个点的控制点p00和p01,以Pep为起点,Pn为终点,p01为控制点构造矢量函数,把矢量函数存储在矢量List[m+1]中,存储矢量活动List[m+1]的开始时间tn-1,将Pep赋值给Pmp,Pn赋值给Pep,p01赋值给Pcp;
步骤1.3:接收新的采样点数据,判断是否为空,如果不为空转到步骤1.2;否则返回矢量序列;
步骤二:受贝塞尔曲线拟合算法的启发,设计状态矢量函数,对三维感知数据进行状态矢量提取;
步骤2.1:对监控对象obj的采样值分量C2的数据进行矢量活动的提取,首先处理接收到的前三个采样数据;
当接收到第一个采样数据P1(t1,x1,y1)时,定义采样点数据类型变量Pep,将P1赋值给Pep,当接收到第二个采样数据P2(t2,x2,y2)时,用Pep和P2两个数据点构造一阶贝塞尔曲线的状态矢量函数,将矢量函数存储在List[0](List[]为ArrayList<Function>类型,Function为自定义的存储状态矢量的类),并存储起始时间;定义采样点数据类型变量Pmp,将Pep赋值给Pmp,P2赋值给Pep;当接收第三个采样数据点P3(t3,x3,y3)时,将t3带入当前矢量活动List[0]矢量函数中,求出相应的x和y值,然后分别将x与x3、y与y3比较,如果差值都小于域值u(u为根据实际情况定义的double值),不需要更新矢量函数,只需将Pep赋值给Pmp,P3赋值给Pep;否则,将t2上传存储在矢量活动List[0]中,标记为矢量活动结束时间,提取Pmp、Pep和P3三点每个点的x和y分量利用控制点生成算法(详见步骤三)求两个控制点p00和p01,用Pep、p01和P3三个数据点提取状态矢量函数,把矢量函数存储在List[1]中,t2为该矢量活动开始时间,存储在矢量活动List[1]中,将Pep赋值给Pmp,P3赋值给Pep;定义二维数据类型变量Pcp,将p01赋值给Pcp;
步骤2.2:接收采样数据点Pn(tn,xn,yn)(n>3),将Pn与当前矢量活动比对;
获取采样数据点Pn的前一个数据点Pn-1所在的当前矢量活动List[m](m<n-1)中的矢量函数阶数,如果是一阶函数转步骤2.2.1,如果是二阶函数转步骤2.2.2,否则转步骤2.2.3;
步骤2.2.1:将tn带入前一个数据点Pn-1所在的矢量函数中,求出相应的x和y值,分别比较xn与x、yn与y大小,如果差值均小于域值u,则将Pep赋值给Pmp,Pn赋值给Pep;否则,存储矢量活动List[m]的终止时间tn-1,提取Pmp、Pep和Pn三点x和y分量利用控制点生成算法来求控制点p00和p01,以Pep为起点,Pn为终点,p01为控制点提取矢量函数,把矢量函数存储在矢量活动List[m+1]中,存储矢量活动开始时间tn-1,将Pep赋值给Pmp,Pn赋值给Pep,将p01赋值给Pcp;
步骤2.2.2:提取Pmp、Pep和Pn三个数据点x和y分量利用控制点生成算法求控制点p00和p01,以Pmp为起点,Pep为终点,Pep和p00为控制点提取三阶贝塞尔函数,将此函数更新为当前矢量函数;在差值允许小于阈值条件下判断Pn是否在当前矢量函数上,如果存在,将Pep赋值给Pmp,Pn赋值给Pep,p01赋值给Pcp;否则,存储矢量活动List[m]的终止时间tn-1,以Pep为起点,Pn为终点,p01为控制点构造二阶贝塞尔曲线状态矢量函数,将此状态矢量函数存储在List[m+1]中,存储矢量活动List[m+1]的开始时间tn-1,将Pep赋值给Pmp,Pn赋值给Pep,p01赋值给Pcp;
步骤2.2.3:在差值允许小于阈值u条件下判断Pn是否在矢量函数上,如果存在,将Pep赋值给Pmp,Pn赋值给Pep;否则,存储矢量活动List[m]的终止时间tn-1,提取Pmp、Pep和Pn三个点x和y分量使用控制点生成算法求控制点p00和p01,以Pep为起点,Pn为终点,p01为控制点构造矢量函数,把矢量函数存储在矢量List[m+1]中,存储矢量活动List[m+1]的开始时间tn-1,将Pep赋值给Pmp,Pn赋值给Pep,p01赋值给Pcp;
步骤2.3:接收新的采样点数据,判断是否为空,如果不为空转到步骤1.2;否则返回矢量序列;
综上步骤一和步骤二,根据接收到采样数据,对数据进行分析,提取出状态矢量,监控对象的历次状态矢量会形成一个矢量序列;通过这种方式,一方面使得相对少量的矢量数据被存放在矢量存储层,这不仅大大减少了在矢量序列基础上对数据查询和分析等所涉及到的数据量,而且有效降低了矢量数据存储层中数据更新的频率;另一方面,这种存储方法生成的函数矢量利于插值查询,提高了准确率;对于某个监控对象多个采样分量,同样可以分解为多个个体来状态矢量提取;
步骤三:控制点生成算法;
步骤3.1:给出的任意三个连续的数据点P1、P2和P3,求两个控制点PA和PB;首先计算数据点P1和P2的距离d01、数据点P2和P3的距离d12,公式如下:
d01=Math.sqrt(Math.pow(P2x-P1x,2)+Math.pow(P2y-P2y,2)); (1)
d12=Math.sqrt(Math.pow(P3x-P2x,2)+Math.pow(P3y-P2y,2)); (2)
步骤3.2:设定一个调节曲线圆滑度的参数u(u一般介于0.3到0.5之间),求出直角三角形T与T1、T与T2的相似比fa和fb,公式如下:
fa=u*d01/(d01+d12); (3)
fb=u*d12/(d01+d12); (4)
步骤3.3:根据相似比fa和fb,求出控制点PA和PB,计算公式如下:
PAx=P2x-fa*(P3x-P1x); (5)
PAy=P2y-fa*(P3y-P1y); (6)
PBx=P2x+fb*(P3x-P1x); (7)
PBy=P2y+fb*(P3y-P1y); (8)
综上,该算法通过求相似比以及设置调节曲线曲率的参数u,能实现控制点的求解;根据实际情况,调节u的大小,能使结果更合理;
步骤四:状态矢量的存储表示方法;
监控对象obj的采样分量C1的数据矢量提取后,对状态矢量进行表示并存储,在步骤一中,将矢量活动存储在List中,这只是监控对象obj的某一分量,用矢量序列来表示出监控对象采样分量C1的状态活动:
VectorSequence=(C1,Lidt[m]);
此时只是提取了一个分量,当对监控对象obj提取多个采样值分量时,以监控对象为单位来表示obj的状态矢量:
在表示监控对象的状态矢量时,需要存储监控对象的唯一标示ObjID,然后对监控对象obj进行简要的描述;然后将监控对象各个监控分量提取的矢量序列记录到监控对象数据中,每提取一个监控分量添加一个;提取状态矢量后,原始数据也需要存储,虽然大部分数据的操作都是基于矢量数据来做,但是有时也需要对原始数据进行查询操作,所以在表示监控对象的状态矢量时,需要将监控对象的原始数据所在服务器的地址映射到状态矢量中;
综上,当对某监控对象某监控分量数据查询时,只需根据监控对象的唯一标示ObjID获取监控对象的数据记录,然后在数据记录中获取监控分量即可,这样查询一方面相比随机分布每个监控对象的监控分量,查询效率更高;另一方面这样有利于对监控对象进行数据关联分析;
步骤五:插值查询,针对ObjectRecord的典型查询操作是查询监控对象在给定时间tq的状态值;定义AtInstant操作,在下面的操作定义中,“→”号两边分别是操作的输入数据和输出数据的数据类型;如果有多个输入数据,则它们之间用“×”连接:
AtInstant:ObjectRecord×TimeInsert→Samplingvalue
AtInstant操作在执行时,将通过插值的方法得到tq的状态值;用户输入查询时间tq,利用二分查找获取监控对象对应采样分量的值;
步骤5.1:对矢量函数序列做二分查找,获取时间tq满足的函数;
步骤5.2:把tq带入函数,监控对象在t时刻对应的特征值;
综上,通过将感知数据存储在矢量序列中,方便插值查询,使用二分查找方法来获取查询结果,提高查询效率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611254734.8/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置