許弋慧 劉桂瑜
(第七一五研究所,杭州,310023)
一種基于GSL的主動(dòng)全向浮標(biāo)信號(hào)處理仿真方法
許弋慧 劉桂瑜
(第七一五研究所,杭州,310023)
研究以CPU為平臺(tái),利用GSL科學(xué)計(jì)算庫(kù),實(shí)現(xiàn)主動(dòng)全向浮標(biāo)信號(hào)的處理方法。數(shù)據(jù)比對(duì)結(jié)果驗(yàn)證了該方法的正確性和有效性。將該方法應(yīng)用于浮標(biāo)仿真系統(tǒng),可節(jié)省成本和資源。
主動(dòng)全向浮標(biāo);信號(hào)處理;CPU;GSL
浮標(biāo)作為反潛直升機(jī)和反潛巡邏機(jī)的重要搜潛裝備,在反潛工作中具有極其重要的作用。主動(dòng)全向浮標(biāo)可提供目標(biāo)距離、徑向速度,并且布設(shè)速度快,受載機(jī)自噪聲影響小,三枚主動(dòng)全向浮標(biāo)還可精準(zhǔn)測(cè)定目標(biāo)的方向、距離及速度[1,2]。主動(dòng)全向浮標(biāo)處理算法一般基于DSP實(shí)現(xiàn)。
由于DSP價(jià)格高、開發(fā)周期長(zhǎng),為節(jié)省成本、縮短開發(fā)周期,仿真系統(tǒng)往往以通用CPU作為平臺(tái)。本文著重研究了一種基于GSL(GNU Scientific Library)科學(xué)計(jì)算庫(kù)的主動(dòng)全向浮標(biāo)信號(hào)處理方法在CPU上的高效實(shí)現(xiàn)。
主動(dòng)全向浮標(biāo)發(fā)射某種形式的聲信號(hào),利用信號(hào)在水下傳播途中障礙物或者目標(biāo)反射的回波探測(cè)目標(biāo)距離及徑向速度。CW單頻信號(hào)為常用的發(fā)射信號(hào)。其信號(hào)波形與頻譜如圖1所示。
圖1 CW頻譜
1.1 目標(biāo)速度測(cè)量
CW信號(hào)測(cè)量目標(biāo)徑向速度是基于多普勒頻移現(xiàn)象[3],其基本原理是發(fā)射機(jī)發(fā)射頻率為ft的單頻信號(hào),一旦經(jīng)目標(biāo)反射,接收機(jī)接收到的信號(hào)頻率為fr,根據(jù)多普勒頻移公式即可得出
其中c為海水中聲速。vr為浮標(biāo)與目標(biāo)的相對(duì)徑向速度:vr>0表示目標(biāo)接近浮標(biāo);vr<0表示目標(biāo)遠(yuǎn)離浮標(biāo)。fd為多普勒頻移。根據(jù)式(1)、(2),可推出
由公式(3)得出:多普勒頻移fd與徑向速度vr呈正比關(guān)系,因此分析fd即可得到vr,不同頻移與速度之間的關(guān)系如圖2所示。
圖2 多普勒頻移fd與徑向速度vr的關(guān)系
當(dāng)目標(biāo)與浮標(biāo)相對(duì)靜止時(shí):vr=0、fr=ft、fd=0;當(dāng)目標(biāo)接近浮標(biāo)時(shí):vr>0,fr>ft,fd>0;當(dāng)目標(biāo)遠(yuǎn)離浮標(biāo)時(shí):vr<0,fr<ft,fd<0。
1.2 目標(biāo)距離測(cè)量
CW信號(hào)測(cè)量目標(biāo)距離是通過接收回波與發(fā)射信號(hào)的時(shí)間差來計(jì)算[3],根據(jù)1.1節(jié)所述,發(fā)射機(jī)發(fā)射單頻信號(hào),經(jīng)目標(biāo)反射后,接收機(jī)接收到回波信號(hào),測(cè)得信號(hào)的往返時(shí)間差,對(duì)其取半即為單程時(shí)間差,通過距離計(jì)算公式得出:
如圖3所示,時(shí)間t為信號(hào)往返時(shí)間差,根據(jù)式(4)即可計(jì)算出目標(biāo)距離。
圖3 CW信號(hào)測(cè)距原理
CPU采用的是“馮·諾依曼結(jié)構(gòu)”,不同于DSP的“哈佛結(jié)構(gòu)”,CPU未具備DSP的高速數(shù)據(jù)運(yùn)算能力。但CPU性能較以前有了很大的提升:主頻增加,數(shù)據(jù)總線寬度改善,還具有高速緩存,處理數(shù)據(jù)的能力大幅提高。借助一些科學(xué)計(jì)算庫(kù),可在CPU上高效實(shí)現(xiàn)主動(dòng)全向浮標(biāo)信號(hào)處理。GSL是一個(gè)開源的科學(xué)計(jì)算庫(kù),擁有大量C語言編寫的科學(xué)計(jì)算函數(shù),在數(shù)學(xué)運(yùn)算上十分強(qiáng)大。在CPU上使用GSL,能夠在一定程度上提升計(jì)算效率。
GSL具有快速傅里葉模塊[4],提供了FFT函數(shù):
該函數(shù)輸入?yún)?shù)data可為長(zhǎng)度為2n的double型數(shù)組,也可直接為長(zhǎng)度n的gsl_complex數(shù)組;stride為步長(zhǎng);n為處理的復(fù)數(shù)個(gè)數(shù);wavetable和workspace分配的存儲(chǔ)空間,長(zhǎng)度為n,用于放置變換過程中產(chǎn)生的中間數(shù)據(jù),變換結(jié)束后,要將這兩塊存儲(chǔ)空間進(jìn)行釋放,以免發(fā)生內(nèi)存泄漏。該函數(shù)輸出結(jié)果重新保存在data數(shù)組中,數(shù)據(jù)類型同輸入。
根據(jù)以上輸入輸出的分析,F(xiàn)FT的處理步驟可以分為三個(gè)步驟,首先分配wavetable和workspace所需的空間,然后直接調(diào)用函數(shù)gsl_fft_complex_forward進(jìn)行FFT處理,最后釋放之前分配的空間。為方便使用,可將這三個(gè)步驟封裝成一個(gè)函數(shù)。進(jìn)行FFT處理,調(diào)用此函數(shù)即可完成,代碼如下:
該函數(shù)輸入?yún)?shù)a為一個(gè)向量結(jié)構(gòu)體;b為長(zhǎng)度相等的系數(shù)常向量結(jié)構(gòu)體。該函數(shù)輸出結(jié)果重新保存在向量a中。降采樣低通濾波、復(fù)解調(diào)等處理步驟本質(zhì)為向量相乘,都可通過此函數(shù)得到。
3.1 算法流程
算法流程見圖4。為提高分辨率,減少運(yùn)算量,首先對(duì)主動(dòng)全向浮標(biāo)信號(hào)進(jìn)行降采樣低通濾波。根據(jù)1.1節(jié)目標(biāo)速度測(cè)量原理所述,徑向速度可通過計(jì)算多普勒頻移fd得到,復(fù)解調(diào)變換是將主動(dòng)全向浮標(biāo)回波信號(hào)消除載波的過程。FFT變換是將復(fù)解調(diào)和濾波后的時(shí)域信號(hào)轉(zhuǎn)為頻域。最后對(duì)其求模,通過以上處理就可得到多普勒頻移fd。目標(biāo)距離測(cè)量算法步驟同1.1節(jié)目標(biāo)速度測(cè)量,目標(biāo)距離與fd出現(xiàn)最大值的時(shí)間成正比。
圖4 算法流程圖
3.2 實(shí)現(xiàn)條件
硬件采用Intel I7 CPU處理器,主頻3.50 GHz,8 GB內(nèi)存,500 GB硬盤。軟件采用Windows操作系統(tǒng)、Visual Studio2005開發(fā)工具。在進(jìn)行開發(fā)之前,VS2005需配置GSL開發(fā)環(huán)境,分三步驟進(jìn)行:(1)向VisualStudio C++項(xiàng)目代碼中添加GSL的包含文件目錄為:gsl/include;(2)在項(xiàng)目中增加GSL軟件庫(kù)文件:libgsl.lib和libgslcblas.lib;(3)在項(xiàng)目運(yùn)行目錄中增加動(dòng)態(tài)鏈接庫(kù):libgsl.dll和libgslcblas.dll。
3.3 結(jié)果評(píng)價(jià)
采用200 ms的脈沖寬度,模擬目標(biāo)距離4.00 km,目標(biāo)徑向速度6.00 kn。30 s時(shí)目標(biāo)距離和速度的測(cè)量結(jié)果如圖5所示。圖中亮點(diǎn)對(duì)應(yīng)的縱坐標(biāo)為目標(biāo)距離,橫坐標(biāo)為目標(biāo)徑向距離。目標(biāo)速度為正,由此可知目標(biāo)在以一定的速度靠近。具體預(yù)設(shè)值與測(cè)量值如表1所示。
圖5 30 s時(shí)目標(biāo)速度和距離的測(cè)量結(jié)果
表1 測(cè)量結(jié)果
通過對(duì)測(cè)量值和預(yù)設(shè)值比較可以看出,測(cè)量結(jié)果均在合理誤差范圍之內(nèi),基于GSL實(shí)現(xiàn)的主動(dòng)全向浮標(biāo)信號(hào)處理正確并且有效。與基于DSP平臺(tái)的實(shí)現(xiàn)代碼相比,基于GSL的代碼規(guī)模減少了約15%;并且在開發(fā)過程中可以充分利用Visual Studio強(qiáng)大的調(diào)試功能,代碼開發(fā)過程調(diào)試難度相對(duì)較小,縮短了開發(fā)周期,提高了效率。
主動(dòng)全向浮標(biāo)能夠測(cè)量目標(biāo)距離和徑向速度,在精準(zhǔn)測(cè)定目標(biāo)的方向上起到很大作用。本文將GSL科學(xué)計(jì)算庫(kù)應(yīng)用到主動(dòng)全向浮標(biāo)信號(hào)的仿真處理中,在CPU平臺(tái)上正確實(shí)現(xiàn)了該算法的處理。結(jié)果顯示,采用該方法減小了調(diào)試難度,縮短了開發(fā)周期。這對(duì)其它聲吶浮標(biāo)的處理仿真有相當(dāng)大的借鑒意義。將GSL科學(xué)計(jì)算庫(kù)應(yīng)用到其它聲吶浮標(biāo)的處理算法中,也是作者下一步的研究方向。
[1]何心怡,邱志明,張春華,等.一種基于三枚主動(dòng)全向浮標(biāo)的水下目標(biāo)定位方法[J].武漢理工大學(xué)學(xué)報(bào),2007,(6):1021-1024.
[2]潘勤升.主動(dòng)全向聲吶浮標(biāo)系統(tǒng)簡(jiǎn)介[J].聲學(xué)與電子工程,1994,(1):39-41.
[3]田坦,劉國(guó)枝,孫大軍.聲吶技術(shù)[M].哈爾濱: 哈爾濱工程大學(xué)出版社,2006: 124-126,153-155.
[4]MARK GALASSI,JIM DAVIES,JAMES THEILER.GNU Scientific Library Reference Manual[EB/OL].[2015-03-03].www.csse.uwa.edu.au.