袁 航 于 群王勇軍
(1.91404部隊(duì) 秦皇島 066001)(2.中國(guó)人民解放軍海軍航空大學(xué) 煙臺(tái) 264000)
隨著軍隊(duì)電子信息裝備的發(fā)展,各類(lèi)探測(cè)手段的精度大大提高,雷達(dá)偵察裝備試驗(yàn)的數(shù)據(jù)量也急劇增加。以往的雷達(dá)偵察裝備試驗(yàn)中采用的人工處理的手段已無(wú)法適應(yīng)現(xiàn)代雷達(dá)偵察設(shè)備試驗(yàn)的數(shù)據(jù)處理需求,需要一種快速處理大量數(shù)據(jù)的數(shù)據(jù)處理方法[1]。
C#語(yǔ)言是一種運(yùn)行于.NET Framework框架的高級(jí)程序設(shè)計(jì)語(yǔ)言,具有簡(jiǎn)單的可視化操作和高運(yùn)行效率等特點(diǎn),具有豐富的第三方軟件庫(kù),是實(shí)現(xiàn)數(shù)據(jù)自動(dòng)化處理的最佳方法之一[2]。
筆者提出了一種基于C#的雷達(dá)偵察設(shè)備測(cè)向精度試驗(yàn)的數(shù)據(jù)處理軟件設(shè)計(jì)方法,通過(guò)C#語(yǔ)言編寫(xiě)計(jì)算機(jī)程序自動(dòng)處理雷達(dá)偵察設(shè)備測(cè)向精度試驗(yàn)中產(chǎn)生的大量數(shù)據(jù),節(jié)省大量人力資源,并能避免人工處理過(guò)程中可能產(chǎn)生的錯(cuò)誤[3]。
雷達(dá)偵察設(shè)備測(cè)向精度試驗(yàn)通常需要計(jì)算其均方根誤差,根據(jù)式(1)計(jì)算被試設(shè)備測(cè)向精度:
式中:σθ為測(cè)向誤差,(°);θi為被試設(shè)備第i次測(cè)量的方位值,(°);γi為北斗衛(wèi)星導(dǎo)航系統(tǒng)第i次測(cè)量的方位值,(°);n為測(cè)量次數(shù)。
隨著雷達(dá)偵察設(shè)備測(cè)向精度精度水平和要求的提高,每一航次所需測(cè)量次數(shù)急劇增加,處理速度需要快速提升[4];被試設(shè)備產(chǎn)生的測(cè)量數(shù)據(jù)與北斗衛(wèi)星導(dǎo)航系統(tǒng)產(chǎn)生的真值數(shù)據(jù)需要用時(shí)刻對(duì)齊的方法比對(duì);均方根誤差結(jié)果需要復(fù)雜的計(jì)算。傳統(tǒng)的人工處理方式已無(wú)法滿(mǎn)足以上需求,急需一種數(shù)據(jù)自動(dòng)化處理的方法[5]。因此,筆者提出了一種基于C#的雷達(dá)偵察設(shè)備測(cè)向精度試驗(yàn)的數(shù)據(jù)處理軟件,具體設(shè)計(jì)與實(shí)現(xiàn)方法如下。
具體流程如圖1所示。
圖1 軟件總體設(shè)計(jì)
主要包含數(shù)據(jù)讀/寫(xiě)程序設(shè)計(jì)、數(shù)據(jù)匹配程序、均方根誤差計(jì)算程序、界面等四個(gè)模塊。首先,軟件讀取測(cè)量數(shù)據(jù)文件與真值數(shù)據(jù)文件,之后對(duì)兩組數(shù)據(jù)進(jìn)行匹配,匹配完成后將數(shù)據(jù)結(jié)果輸出。
本程序所用數(shù)據(jù)文件均為xlsx格式,以方便數(shù)據(jù)采集與后續(xù)處理。目前,C#讀寫(xiě)xlsx格式文件共有幾種比較經(jīng)典的方法。
第一種是采用OleDB方法。該方法是把xlsx當(dāng)做一個(gè)數(shù)據(jù)源來(lái)進(jìn)行數(shù)據(jù)的讀取操作,該方法讀取速率較高,但缺點(diǎn)是方法不靈活,只能一次性讀取文件的全部數(shù)據(jù),無(wú)法判斷數(shù)據(jù)類(lèi)型,而且代碼與操作系統(tǒng)安裝的office版本有關(guān),可能會(huì)出現(xiàn)兼容性問(wèn)題。
第二種是將xlsx轉(zhuǎn)化成csv格式后,用文件流讀取的方法。該方法的代碼較簡(jiǎn)單,但處理前后手動(dòng)轉(zhuǎn)換文件會(huì)增加用戶(hù)的操作量,且無(wú)法判斷數(shù)據(jù)類(lèi)型。
第三種是引用com組件的方法。該方法代碼較復(fù)雜,但方法比較靈活,能夠判斷數(shù)據(jù)類(lèi)型且處理前后不需要轉(zhuǎn)換文件格式。
因此,我們這里采用引用com組件的方法。首先添加office自帶的Microsoft.Office.Interop.Excel命名空間。使用OpenFileDialog.ShowDialog()方法讓用戶(hù)選擇數(shù)據(jù)文件目錄,使用Worksheet.get_Item方法獲取xlsx文件的sheet,使用get_Value()方法得到獲取文件中的數(shù)據(jù),將數(shù)據(jù)以object[,]格式的變量保存,以便后續(xù)處理。經(jīng)過(guò)數(shù)據(jù)匹配、均方根誤差等程序計(jì)算后,使用set_Value()方法,將匹配后的真值數(shù)據(jù)和均方根誤差值寫(xiě)入測(cè)量數(shù)據(jù)文件的最右列。
圖2 數(shù)據(jù)匹配程序設(shè)計(jì)
該程序主要是將測(cè)量數(shù)據(jù)與真值數(shù)據(jù)采用時(shí)刻對(duì)齊的方式相匹配。例如1時(shí)刻測(cè)量數(shù)據(jù)值需要與同為1時(shí)刻的真值數(shù)據(jù)作比較,在程序中無(wú)法像人一樣直接找到確切位置,而是需要遍歷整個(gè)數(shù)據(jù)。因此,該程序通過(guò)雙重循環(huán)與判斷實(shí)現(xiàn)。具體流程如圖2所示。
該程序計(jì)算出最終均方根誤差的結(jié)果。利用xlsx文件的公式功能,將“=SQRT(DEVSQ(D:D)/COUNT(D:D))”公式存入變量中,該變量寫(xiě)入文件后的計(jì)算結(jié)果即為該試驗(yàn)的最終結(jié)果[6]。
為了方便用戶(hù)的操作使用,將該軟件弄到winform框架中,該框架人機(jī)交互界面友好,簡(jiǎn)單易學(xué)。界面的設(shè)計(jì)因人而異,可根據(jù)需求及編程者自身設(shè)計(jì)能力而定,本文在此舉出一個(gè)界面設(shè)計(jì)的實(shí)例,使用TextBox控件傳遞文件目錄[7]。輸入文件目錄后,軟件自動(dòng)讀取選取文件的所有Sheet,并使用ComboBox控件傳遞用戶(hù)對(duì)Sheet的選擇。根據(jù)實(shí)際需求,增加進(jìn)度條以便用戶(hù)掌握數(shù)據(jù)處理進(jìn)度。
分別輸入數(shù)據(jù)文件與真值文件的路徑和兩文件數(shù)據(jù)所在的Sheet。之后點(diǎn)擊開(kāi)始按鈕,程序便會(huì)自動(dòng)運(yùn)行,并將數(shù)據(jù)結(jié)果保存至數(shù)據(jù)文件中[8]。
數(shù)據(jù)[9]經(jīng)過(guò)處理后,部分結(jié)果表格如表1所示。
表1 經(jīng)處理后部分?jǐn)?shù)據(jù)
圖3 誤差數(shù)據(jù)圖
將上述數(shù)據(jù)中的誤差值制作為圖表,如圖3所示。
該圖表即為該測(cè)向精度試驗(yàn)數(shù)據(jù)經(jīng)該軟件處理后得到的誤差數(shù)據(jù)圖。
對(duì)加載特定數(shù)據(jù)數(shù)量情況下的軟件運(yùn)行時(shí)長(zhǎng)進(jìn)行統(tǒng)計(jì)分析,結(jié)果如表2所示。
表2 數(shù)據(jù)數(shù)量與運(yùn)行時(shí)長(zhǎng)關(guān)系統(tǒng)計(jì)表
由表2可見(jiàn),軟件運(yùn)行時(shí)長(zhǎng)主要與數(shù)據(jù)數(shù)量關(guān)系較大,與真值數(shù)量關(guān)系較小。在試驗(yàn)數(shù)據(jù)總量較少的情況下[10](20k數(shù)據(jù)量以?xún)?nèi)),運(yùn)行時(shí)長(zhǎng)主要由軟件初始化時(shí)長(zhǎng)決定,約為固定值。以20k數(shù)據(jù)量為例,通過(guò)本軟件處理僅需9s,其效率是傳統(tǒng)人工手段所不可企及的[11]。
通過(guò)雷達(dá)偵察設(shè)備測(cè)向精度試驗(yàn)數(shù)據(jù)處理軟件進(jìn)行數(shù)據(jù)處理工作,能夠節(jié)省人力資源,并提高數(shù)據(jù)處理效率,推動(dòng)了靶場(chǎng)信息化水平建設(shè)[12]。以該軟件為基礎(chǔ),可開(kāi)發(fā)其他試驗(yàn)項(xiàng)目的處理軟件,并對(duì)功能進(jìn)行整合,可使雷達(dá)偵察設(shè)備試驗(yàn)的數(shù)據(jù)處理工作效率大大提高,具有較高的應(yīng)用前景。