本发明涉及的是一种传感器数据处理方法,具体涉及一种矢量阵被动声呐异常数据的在线剔除方法。
背景技术:
矢量阵被动声呐设备在对水下目标进行探测的过程中,由于受到水下环境干扰、随机噪声、以及平台自噪声的影响,矢量阵被动声呐对目标的方位信息的测量中出现不确定性的中断和野值,这些中断点和野值夹杂在正常测量值中间会对目标位置、速度等运动要素的解算带来严重的影响。因此,在数据解算前必须对矢量阵被动声呐探测数据中的中断点和野值等异常值加以剔除。
目前,国内外的相关研究工作多集中于对连续采样序列数据异常值剔除方面。“剔除异常数据的稳健性处理方法”(《中国计量学院学报》,2004年1期)中提出了一种异常数据的剔除方法;“基于双向检验的异常数据剔除与修复方法”(《电光与控制》,2013年6期)中提出了一种利用多项式拟合对测量结果进行双向检验的异常数据剔除方法。以上文献中提到的方法,均是在测量数据连续的情况下对数据异常值进行剔除,未考虑到矢量阵被动声呐数据受水下复杂声环境影响而出现不确定性的数据中断和中断后数据阶跃性突变的特性,这使得以上方法应用于矢量阵被动声呐数据异常值剔除时效果不佳。
技术实现要素:
本发明的目的在于提供一种能够为实现有效的数据分析做好准备的矢量阵被动声呐异常数据在线剔除方法。
本发明的目的是这样实现的,
101:读取对矢量阵被动声呐测量数据,将原始数据存入缓冲区;设置两个长度均为n的数据队列L1和L2,第一数据队列L1用来存放最近的n个正常数据,第二数据队列L2用来存放连续的异常数据,并设定异常数据判别门限值T;
102:求第一数据队列L1中数据的均值
103:根具公式求出待判断别数据X(i)的跳跃幅度D(i),其中X(i+1)为X(i)后一时刻的矢量阵被动声呐测量数据;
104:比较D(i)与T的大小,若D(i)小于T则X(i)为正常值,将第一数据队列L1中数据向后移动一个单元,把X(i)装入第一数据队列L1的首端,并执行步骤105;若D(i)大于T则执行步骤106;
105:清零连续异常值个数计数;
106:若D(i)大于T则X(i)为异常值,将第二数据队列L2中数据向后移动一个单元,把X(i)装入数据队列L2首端,并对连续异常值个数计数加1,然后删除X(i);
107:通过检测连续异常值计数值是否等于n来检测异常值剔除过程是否发生异常;
108:若连续异常值达到n个,则通过进一步计算第二数据队列L2中数据的方差S来判断异常值剔除过程是否发生错误,当S小于T2/16时为发生异常,则执行步骤109;
109:用第二数据队列L2中数据覆盖第一数据队列L1,并清零连续异常值计数器;
重复上述步骤102至109,实现对矢量阵被动声呐数据序列异常值的在线剔除。
n的取值范围为5-15。
本发明提供了一种矢量阵被动声呐数据异常值剔除方法,来实现对矢量阵被动声呐设备采集的原始数据中异常值的剔除和数据中断段的切除处理,从而为实现有效的数据分析做好准备。
本发明的技术方案的要点体现在:通过判断矢量阵被动声呐测量数据序列X(i)的跳动幅度D(i)是否超出设定的门限值T来决定X(i)是否为异常值。这里的测量数据跳动幅度D(i)是由测量值X(i)与其前n个测量值的均值的差值以及测量值X(i)与其后一个测量值X(i+1)的差值的和组成的。在异常值剔除过程中,对所剔除的异常值进行实时监测,如果发现连续n个数据均被判定为异常值,且连续剔除的n个数据方差不超过T2/16,则说明数据序列发生了突变,这时将这n个连续异常值数据恢复为正常值并重新计算均值然后继续进行后面的异常值剔除过程。
D(i)是由测量值X(i)与正常值数据队列中n个测量值的均值的差值以及测量值X(i)与其后一个测量值X(i+1)的差值两部分组成的,D(i)的值由以下公式求得,
队列长度为n,数据根据先后顺序存放在队列中,每次更新时,队列中所有数据均向后移动一个单元,将队列中最末端的数据移出队列,并将新的数据填入队列首端。
是由数据队列中的n个值X(i-n)…X(i-1)求算数平均得到的,其计算公式如下所示:
方差S为异常值数据队列中n个数值的方差,其计算公式如下所示:
本发明的特色是,结合了矢量阵被动声呐数据不确定性中断的特点,基于一步延时的思想设计了一种新的异常值识别方法并对异常值剔除过程实时监测和矫正,防止了异常值剔除过程在数据间断处和突变段的失效。
附图说明
图1为本发明对异常值识别和剔除流程图。
图2为实验测得的一组矢量阵被动声呐方位测量原始数据曲线。
图3为本发明对矢量阵被动声呐方位测量原始数据进行异常值剔除后的数据曲线。
具体实施方式
下面结合附图举例对本发明进行详细说明。
结合图1,首先执行对矢量阵被动声呐测量数据的读取【101】,将原始数据存入缓冲区。然后执行对数据异常值的剔除。对异常值的剔除过程主要分为两部分,第一部分为对数据序列中的异常值的识别剔除,第二部分为对异常值的检测和对异常值剔除过程的矫正。具体实现如下:
首先设置两个长度均为n的数据队列L1和L2,这里n可以根据数据的离散程度在5-15内取值。队列L1用来存放最近的n个正常数据,队列L2用来存放连续的异常数据。初始时刻可以令数据队列L1中数据均为0,或将连续的n个原始数据装入L1,而将L2设为空的数据队列,并设定异常数据判别门限值T。
然后求数据队列L1中数据的均值并根具公式求出待判断别数据X(i)的跳跃幅度D(i)【103】,其中X(i+1)为X(i)后一时刻的矢量阵被动声呐测量数据,比较D(i)与T的大小【104】,若D(i)小于T则X(i)为正常值,可将数据队列L1中数据向后移动一个单元,把X(i)装入数据队列L1的首端,并清零连续异常值个数计数【105】。若D(i)大于T则X(i)为异常值,需将数据队列L2中数据向后移动一个单元,把X(i)装入数据队列L2首端,并对连续异常值个数计数加1,然后删除X(i)【106】。以上便完成了对异常值的判别与剔除的过程。
在异常值剔除过程中,通过检测连续异常值计数值是否等于n来检测异常值剔除过程是否发生异常【107】,若连续异常值达到n个,则需要通过进一步计算数据队列L2中数据的方差S来判断异常值剔除过程是否发生错误,当S小于T2/16时说明过程发生异常【108】,此时用数据队列L2中数据覆盖数据队列L1,并清零连续异常值计数器【109】。重复以上两个过程便可以实现对矢量阵被动声呐数据序列异常值的在线剔除。经实验验证,该算法在初始运行n步以后会收敛到稳定状态。