本發(fā)明涉及的是一種傳感器數(shù)據(jù)處理方法,具體涉及一種矢量陣被動(dòng)聲吶異常數(shù)據(jù)的在線剔除方法。
背景技術(shù):
矢量陣被動(dòng)聲吶設(shè)備在對(duì)水下目標(biāo)進(jìn)行探測(cè)的過程中,由于受到水下環(huán)境干擾、隨機(jī)噪聲、以及平臺(tái)自噪聲的影響,矢量陣被動(dòng)聲吶對(duì)目標(biāo)的方位信息的測(cè)量中出現(xiàn)不確定性的中斷和野值,這些中斷點(diǎn)和野值夾雜在正常測(cè)量值中間會(huì)對(duì)目標(biāo)位置、速度等運(yùn)動(dòng)要素的解算帶來嚴(yán)重的影響。因此,在數(shù)據(jù)解算前必須對(duì)矢量陣被動(dòng)聲吶探測(cè)數(shù)據(jù)中的中斷點(diǎn)和野值等異常值加以剔除。
目前,國(guó)內(nèi)外的相關(guān)研究工作多集中于對(duì)連續(xù)采樣序列數(shù)據(jù)異常值剔除方面?!疤蕹惓?shù)據(jù)的穩(wěn)健性處理方法”(《中國(guó)計(jì)量學(xué)院學(xué)報(bào)》,2004年1期)中提出了一種異常數(shù)據(jù)的剔除方法;“基于雙向檢驗(yàn)的異常數(shù)據(jù)剔除與修復(fù)方法”(《電光與控制》,2013年6期)中提出了一種利用多項(xiàng)式擬合對(duì)測(cè)量結(jié)果進(jìn)行雙向檢驗(yàn)的異常數(shù)據(jù)剔除方法。以上文獻(xiàn)中提到的方法,均是在測(cè)量數(shù)據(jù)連續(xù)的情況下對(duì)數(shù)據(jù)異常值進(jìn)行剔除,未考慮到矢量陣被動(dòng)聲吶數(shù)據(jù)受水下復(fù)雜聲環(huán)境影響而出現(xiàn)不確定性的數(shù)據(jù)中斷和中斷后數(shù)據(jù)階躍性突變的特性,這使得以上方法應(yīng)用于矢量陣被動(dòng)聲吶數(shù)據(jù)異常值剔除時(shí)效果不佳。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種能夠?yàn)閷?shí)現(xiàn)有效的數(shù)據(jù)分析做好準(zhǔn)備的矢量陣被動(dòng)聲吶異常數(shù)據(jù)在線剔除方法。
本發(fā)明的目的是這樣實(shí)現(xiàn)的,
101:讀取對(duì)矢量陣被動(dòng)聲吶測(cè)量數(shù)據(jù),將原始數(shù)據(jù)存入緩沖區(qū);設(shè)置兩個(gè)長(zhǎng)度均為n的數(shù)據(jù)隊(duì)列L1和L2,第一數(shù)據(jù)隊(duì)列L1用來存放最近的n個(gè)正常數(shù)據(jù),第二數(shù)據(jù)隊(duì)列L2用來存放連續(xù)的異常數(shù)據(jù),并設(shè)定異常數(shù)據(jù)判別門限值T;
102:求第一數(shù)據(jù)隊(duì)列L1中數(shù)據(jù)的均值
103:根具公式求出待判斷別數(shù)據(jù)X(i)的跳躍幅度D(i),其中X(i+1)為X(i)后一時(shí)刻的矢量陣被動(dòng)聲吶測(cè)量數(shù)據(jù);
104:比較D(i)與T的大小,若D(i)小于T則X(i)為正常值,將第一數(shù)據(jù)隊(duì)列L1中數(shù)據(jù)向后移動(dòng)一個(gè)單元,把X(i)裝入第一數(shù)據(jù)隊(duì)列L1的首端,并執(zhí)行步驟105;若D(i)大于T則執(zhí)行步驟106;
105:清零連續(xù)異常值個(gè)數(shù)計(jì)數(shù);
106:若D(i)大于T則X(i)為異常值,將第二數(shù)據(jù)隊(duì)列L2中數(shù)據(jù)向后移動(dòng)一個(gè)單元,把X(i)裝入數(shù)據(jù)隊(duì)列L2首端,并對(duì)連續(xù)異常值個(gè)數(shù)計(jì)數(shù)加1,然后刪除X(i);
107:通過檢測(cè)連續(xù)異常值計(jì)數(shù)值是否等于n來檢測(cè)異常值剔除過程是否發(fā)生異常;
108:若連續(xù)異常值達(dá)到n個(gè),則通過進(jìn)一步計(jì)算第二數(shù)據(jù)隊(duì)列L2中數(shù)據(jù)的方差S來判斷異常值剔除過程是否發(fā)生錯(cuò)誤,當(dāng)S小于T2/16時(shí)為發(fā)生異常,則執(zhí)行步驟109;
109:用第二數(shù)據(jù)隊(duì)列L2中數(shù)據(jù)覆蓋第一數(shù)據(jù)隊(duì)列L1,并清零連續(xù)異常值計(jì)數(shù)器;
重復(fù)上述步驟102至109,實(shí)現(xiàn)對(duì)矢量陣被動(dòng)聲吶數(shù)據(jù)序列異常值的在線剔除。
n的取值范圍為5-15。
本發(fā)明提供了一種矢量陣被動(dòng)聲吶數(shù)據(jù)異常值剔除方法,來實(shí)現(xiàn)對(duì)矢量陣被動(dòng)聲吶設(shè)備采集的原始數(shù)據(jù)中異常值的剔除和數(shù)據(jù)中斷段的切除處理,從而為實(shí)現(xiàn)有效的數(shù)據(jù)分析做好準(zhǔn)備。
本發(fā)明的技術(shù)方案的要點(diǎn)體現(xiàn)在:通過判斷矢量陣被動(dòng)聲吶測(cè)量數(shù)據(jù)序列X(i)的跳動(dòng)幅度D(i)是否超出設(shè)定的門限值T來決定X(i)是否為異常值。這里的測(cè)量數(shù)據(jù)跳動(dòng)幅度D(i)是由測(cè)量值X(i)與其前n個(gè)測(cè)量值的均值的差值以及測(cè)量值X(i)與其后一個(gè)測(cè)量值X(i+1)的差值的和組成的。在異常值剔除過程中,對(duì)所剔除的異常值進(jìn)行實(shí)時(shí)監(jiān)測(cè),如果發(fā)現(xiàn)連續(xù)n個(gè)數(shù)據(jù)均被判定為異常值,且連續(xù)剔除的n個(gè)數(shù)據(jù)方差不超過T2/16,則說明數(shù)據(jù)序列發(fā)生了突變,這時(shí)將這n個(gè)連續(xù)異常值數(shù)據(jù)恢復(fù)為正常值并重新計(jì)算均值然后繼續(xù)進(jìn)行后面的異常值剔除過程。
D(i)是由測(cè)量值X(i)與正常值數(shù)據(jù)隊(duì)列中n個(gè)測(cè)量值的均值的差值以及測(cè)量值X(i)與其后一個(gè)測(cè)量值X(i+1)的差值兩部分組成的,D(i)的值由以下公式求得,
隊(duì)列長(zhǎng)度為n,數(shù)據(jù)根據(jù)先后順序存放在隊(duì)列中,每次更新時(shí),隊(duì)列中所有數(shù)據(jù)均向后移動(dòng)一個(gè)單元,將隊(duì)列中最末端的數(shù)據(jù)移出隊(duì)列,并將新的數(shù)據(jù)填入隊(duì)列首端。
是由數(shù)據(jù)隊(duì)列中的n個(gè)值X(i-n)…X(i-1)求算數(shù)平均得到的,其計(jì)算公式如下所示:
方差S為異常值數(shù)據(jù)隊(duì)列中n個(gè)數(shù)值的方差,其計(jì)算公式如下所示:
本發(fā)明的特色是,結(jié)合了矢量陣被動(dòng)聲吶數(shù)據(jù)不確定性中斷的特點(diǎn),基于一步延時(shí)的思想設(shè)計(jì)了一種新的異常值識(shí)別方法并對(duì)異常值剔除過程實(shí)時(shí)監(jiān)測(cè)和矯正,防止了異常值剔除過程在數(shù)據(jù)間斷處和突變段的失效。
附圖說明
圖1為本發(fā)明對(duì)異常值識(shí)別和剔除流程圖。
圖2為實(shí)驗(yàn)測(cè)得的一組矢量陣被動(dòng)聲吶方位測(cè)量原始數(shù)據(jù)曲線。
圖3為本發(fā)明對(duì)矢量陣被動(dòng)聲吶方位測(cè)量原始數(shù)據(jù)進(jìn)行異常值剔除后的數(shù)據(jù)曲線。
具體實(shí)施方式
下面結(jié)合附圖舉例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
結(jié)合圖1,首先執(zhí)行對(duì)矢量陣被動(dòng)聲吶測(cè)量數(shù)據(jù)的讀取【101】,將原始數(shù)據(jù)存入緩沖區(qū)。然后執(zhí)行對(duì)數(shù)據(jù)異常值的剔除。對(duì)異常值的剔除過程主要分為兩部分,第一部分為對(duì)數(shù)據(jù)序列中的異常值的識(shí)別剔除,第二部分為對(duì)異常值的檢測(cè)和對(duì)異常值剔除過程的矯正。具體實(shí)現(xiàn)如下:
首先設(shè)置兩個(gè)長(zhǎng)度均為n的數(shù)據(jù)隊(duì)列L1和L2,這里n可以根據(jù)數(shù)據(jù)的離散程度在5-15內(nèi)取值。隊(duì)列L1用來存放最近的n個(gè)正常數(shù)據(jù),隊(duì)列L2用來存放連續(xù)的異常數(shù)據(jù)。初始時(shí)刻可以令數(shù)據(jù)隊(duì)列L1中數(shù)據(jù)均為0,或?qū)⑦B續(xù)的n個(gè)原始數(shù)據(jù)裝入L1,而將L2設(shè)為空的數(shù)據(jù)隊(duì)列,并設(shè)定異常數(shù)據(jù)判別門限值T。
然后求數(shù)據(jù)隊(duì)列L1中數(shù)據(jù)的均值并根具公式求出待判斷別數(shù)據(jù)X(i)的跳躍幅度D(i)【103】,其中X(i+1)為X(i)后一時(shí)刻的矢量陣被動(dòng)聲吶測(cè)量數(shù)據(jù),比較D(i)與T的大小【104】,若D(i)小于T則X(i)為正常值,可將數(shù)據(jù)隊(duì)列L1中數(shù)據(jù)向后移動(dòng)一個(gè)單元,把X(i)裝入數(shù)據(jù)隊(duì)列L1的首端,并清零連續(xù)異常值個(gè)數(shù)計(jì)數(shù)【105】。若D(i)大于T則X(i)為異常值,需將數(shù)據(jù)隊(duì)列L2中數(shù)據(jù)向后移動(dòng)一個(gè)單元,把X(i)裝入數(shù)據(jù)隊(duì)列L2首端,并對(duì)連續(xù)異常值個(gè)數(shù)計(jì)數(shù)加1,然后刪除X(i)【106】。以上便完成了對(duì)異常值的判別與剔除的過程。
在異常值剔除過程中,通過檢測(cè)連續(xù)異常值計(jì)數(shù)值是否等于n來檢測(cè)異常值剔除過程是否發(fā)生異?!?07】,若連續(xù)異常值達(dá)到n個(gè),則需要通過進(jìn)一步計(jì)算數(shù)據(jù)隊(duì)列L2中數(shù)據(jù)的方差S來判斷異常值剔除過程是否發(fā)生錯(cuò)誤,當(dāng)S小于T2/16時(shí)說明過程發(fā)生異常【108】,此時(shí)用數(shù)據(jù)隊(duì)列L2中數(shù)據(jù)覆蓋數(shù)據(jù)隊(duì)列L1,并清零連續(xù)異常值計(jì)數(shù)器【109】。重復(fù)以上兩個(gè)過程便可以實(shí)現(xiàn)對(duì)矢量陣被動(dòng)聲吶數(shù)據(jù)序列異常值的在線剔除。經(jīng)實(shí)驗(yàn)驗(yàn)證,該算法在初始運(yùn)行n步以后會(huì)收斂到穩(wěn)定狀態(tài)。