宋飛飛 許弋慧
中國船舶第七一五研究所,浙江杭州 310012
吊放聲納是海軍反潛直升機(jī)對水下目標(biāo)進(jìn)行探測的重要裝備,主要用于對潛艇的搜索、定位、識別及跟蹤[1]。吊放聲納根據(jù)接收的回波聲信號,采用多種算法獲取目標(biāo)的參數(shù)信息,可以及時、準(zhǔn)確地搜索指定海域內(nèi)的敵方潛艇[2]。
吊放聲納信號處理算法一般基于DSP(digital signal processing)實(shí)現(xiàn),但DSP價格高,開發(fā)周期長[3],在算法仿真及驗(yàn)證階段,該方法存在一定的困難。仿真系統(tǒng)往往以通用CPU作為平臺,而普通CPU處理高速數(shù)據(jù)能力有限,本文著重研究了一種基于GSL科學(xué)計算庫的吊放聲納信號處理方法在CPU上的高效實(shí)現(xiàn)。仿真數(shù)據(jù)比對結(jié)果驗(yàn)證了該方法的正確性和有效性。
吊放聲納發(fā)射某種形式的聲信號,在聲納作用距離內(nèi),發(fā)射脈沖在水中傳播,遇到某一目標(biāo),經(jīng)反射產(chǎn)生回波信號,水下基陣接收回波聲信號和背景噪聲[4]進(jìn)行信號處理,獲取目標(biāo)的距離、方位等信息。HFM雙曲調(diào)頻信號為常用的發(fā)射信號,其信號波形與頻譜如圖1所示。
HFM信號測量目標(biāo)距離是通過接收回波與發(fā)射信號的時間差來計算[5],發(fā)射機(jī)發(fā)射HFM信號,一旦經(jīng)目標(biāo)反射,接收機(jī)接收到回波信號,測得信號的往返時間差,對其取半即為單程時間差,通過距離計算公式得出:
其中,c ——聲速;
t ——信號往返時間差。
根據(jù)式(1)即可計算出目標(biāo)距離。
吊放聲納對接收的目標(biāo)回波信號進(jìn)行處理,在波束形成結(jié)果中搜尋最大值,該最大值所在的波束角作為目標(biāo)的粗方位。根據(jù)預(yù)成波束計算獲取標(biāo)準(zhǔn)測向表,利用最大值所在的波束號及其相鄰2個波束數(shù)據(jù)(共3個值)與標(biāo)準(zhǔn)測向表對應(yīng)的值進(jìn)行歐氏距離計算,如式(2)、式(3)所示。
其中,X(n0)、X(n0-1)、X(n0+1)——最大值所在波束號及其相鄰2個波束的數(shù)據(jù);
Δθ' ——設(shè)定的偏差角分值;
D1(Δθ')、D2(Δθ')——d1、d2的理論計算值(標(biāo)準(zhǔn)測向表對應(yīng)的值)。
將歐氏距離r(Δθ')最小值所對應(yīng)的標(biāo)準(zhǔn)測向表中的角度數(shù)作為修正量,粗方位+修正量即為該目標(biāo)的方位。
信號處理算法通常基于DSP芯片來實(shí)現(xiàn),但DSP芯片價格高,開發(fā)周期長,因此,在算法仿真及驗(yàn)證階段,使用該方法存在一定的困難?,F(xiàn)在CPU相較以前性能有了很大的提升,再借助一些科學(xué)計算庫,在CPU上就可高效實(shí)現(xiàn)吊放聲納信號處理算法。
GSL是專門為應(yīng)用數(shù)學(xué)和科學(xué)技術(shù)領(lǐng)域的數(shù)值計算提供支持的軟件庫,該函數(shù)庫提供了廣泛的數(shù)學(xué)算法的實(shí)現(xiàn)函數(shù),提供超過1,000個函數(shù),這些函數(shù)包含的范圍有:復(fù)數(shù)計算、多項(xiàng)式求根、特殊函數(shù)、向量和矩陣運(yùn)算、排列、組合、排序、線性代數(shù)、特征值和特征向量、快速傅立葉變換(FFT)、數(shù)值積分、隨機(jī)數(shù)生成、隨機(jī)數(shù)分布、統(tǒng)計、蒙特卡洛積分等。
吊放聲納信號處理中,F(xiàn)FT運(yùn)算可調(diào)用GSL中的快速傅里葉模塊,分為3個步驟進(jìn)行:首先,分配wavetable和workspace所需的空間;然后,調(diào)用函數(shù)gsl_fft_complex_forward;最后,釋放之前分配的空間。為方便使用,將這3個步驟封裝成一個函數(shù),代碼如下所示。
其中,函數(shù)gsl_fft_complex_forward的參數(shù)data為輸入輸出所共用,不利于后期軟件調(diào)試。因此,在封裝函數(shù)時分別定義了輸入輸出數(shù)組,并在調(diào)用函數(shù)gsl_fft_complex_forward前將輸入數(shù)組搬移至輸出數(shù)組,從而避免處理過程中輸入數(shù)組數(shù)據(jù)被覆蓋的問題。
吊放聲納信號處理中的復(fù)解調(diào)、降采樣低通濾波、頻域波束形成等運(yùn)算可調(diào)用GSL的向量與矩陣模塊,涉及到的函數(shù)為向量相乘函數(shù)、向量搬移函數(shù)、向量求模函數(shù)等,根據(jù)各個函數(shù)的運(yùn)算特點(diǎn)進(jìn)行封裝即可使用。對函數(shù)進(jìn)行封裝,不僅避免對GSL底層函數(shù)的直接調(diào)用,減少了開發(fā)人員的工作量,而且具有很好的移植性。
算法流程圖如圖2所示。首先,對吊放聲納回波信號進(jìn)行復(fù)解調(diào),消除載波的影響;接著,對信號進(jìn)行降采樣低通濾波,提高分辨率,減少運(yùn)算量,降采樣濾波完成后,進(jìn)行FFT變換,在頻域做波束形成、譜線選擇、匹配相關(guān);最后,對其進(jìn)行逆快速傅里葉變換(inverse fast fourier transform,IFFT)。通過以上運(yùn)算可得到HFM信號處理結(jié)果,根據(jù)1.1節(jié)的目標(biāo)距離測量和1.2節(jié)的目標(biāo)方位測量原理所述,對HFM信號處理結(jié)果進(jìn)行處理即可獲取目標(biāo)距離和目標(biāo)方位。
在Intel x86硬件平臺進(jìn)行驗(yàn)證,CPU為i7-4770,內(nèi)存為16 G,操作系統(tǒng)為Windows,開發(fā)工具為Visual Studio 2005。
在進(jìn)行開發(fā)之前,VS2005需配置GSL開發(fā)環(huán)境,分3個步驟進(jìn)行[3]:
(1)向Visual Studio C++項(xiàng)目代碼中添加GSL的包含文件目錄為gsl/include;
(2)在項(xiàng)目中增加GSL軟件庫文件libgsl.lib和libgslcblas.lib;
(3)在項(xiàng)目運(yùn)行目錄中增加動態(tài)鏈接庫libgsl.dll和libgslcblas.dll。
設(shè)置2個模擬目標(biāo),目標(biāo)1距離為3 km,方位為255°,目標(biāo)2距離為5 km,方位為135°,仿真信號采用脈沖寬度為300 ms的HFM,信號處理結(jié)果如圖3所示。
圖中對應(yīng)的縱坐標(biāo)為目標(biāo)距離,橫坐標(biāo)為目標(biāo)方位,從圖中可以看出,兩目標(biāo)對應(yīng)的距離、方位與預(yù)設(shè)值相符。其他預(yù)設(shè)值與測量值如表1所示。
表1 測量結(jié)果
由表1可以看出,預(yù)設(shè)值與實(shí)測值的誤差均在合理范圍之內(nèi),本文研究的基于GSL實(shí)現(xiàn)吊放聲納信號處理方法能正確且有效地估算出目標(biāo)的參數(shù)信息。
對比基于DSP平臺的實(shí)現(xiàn)方法,基于GSL的實(shí)現(xiàn)方法具有以下幾個優(yōu)點(diǎn):
1、代碼規(guī)模減少了約15%;
2、開發(fā)人員可以充分利用Visual Studio強(qiáng)大的調(diào)試功能降低調(diào)試難度,減少工作量,縮短開發(fā)周期;
3、可移植性,對GSL的庫函數(shù)進(jìn)行二次封裝,通過不同的編譯宏隔離,對硬件平臺進(jìn)行屏蔽。
本文對吊放聲納信號處理算法原理進(jìn)行了簡單介紹,著重對GSL的設(shè)計思路和實(shí)現(xiàn)方法進(jìn)行了說明。實(shí)驗(yàn)結(jié)果表明,基于GSL信號處理算法的實(shí)現(xiàn)方法具有實(shí)用性,且在滿足算法仿真的正確性和有效性的前提下降低了利用DSP芯片開發(fā)的開發(fā)成本和周期,同時,也降低了直接利用CPU實(shí)現(xiàn)算法的運(yùn)算時間,但該方法數(shù)據(jù)處理耗時較DSP平臺長,需進(jìn)一步改進(jìn)。