一种基于GSL的主动全向浮标信号处理仿真方法
2016-11-16许弋慧刘桂瑜
许弋慧 刘桂瑜
(第七一五研究所,杭州,310023)
一种基于GSL的主动全向浮标信号处理仿真方法
许弋慧 刘桂瑜
(第七一五研究所,杭州,310023)
研究以CPU为平台,利用GSL科学计算库,实现主动全向浮标信号的处理方法。数据比对结果验证了该方法的正确性和有效性。将该方法应用于浮标仿真系统,可节省成本和资源。
主动全向浮标;信号处理;CPU;GSL
浮标作为反潜直升机和反潜巡逻机的重要搜潜装备,在反潜工作中具有极其重要的作用。主动全向浮标可提供目标距离、径向速度,并且布设速度快,受载机自噪声影响小,三枚主动全向浮标还可精准测定目标的方向、距离及速度[1,2]。主动全向浮标处理算法一般基于DSP实现。
由于DSP价格高、开发周期长,为节省成本、缩短开发周期,仿真系统往往以通用CPU作为平台。本文着重研究了一种基于GSL(GNU Scientific Library)科学计算库的主动全向浮标信号处理方法在CPU上的高效实现。
1 方法原理
主动全向浮标发射某种形式的声信号,利用信号在水下传播途中障碍物或者目标反射的回波探测目标距离及径向速度。CW单频信号为常用的发射信号。其信号波形与频谱如图1所示。
图1 CW频谱
1.1 目标速度测量
CW信号测量目标径向速度是基于多普勒频移现象[3],其基本原理是发射机发射频率为ft的单频信号,一旦经目标反射,接收机接收到的信号频率为fr,根据多普勒频移公式即可得出
其中c为海水中声速。vr为浮标与目标的相对径向速度:vr>0表示目标接近浮标;vr<0表示目标远离浮标。fd为多普勒频移。根据式(1)、(2),可推出
由公式(3)得出:多普勒频移fd与径向速度vr呈正比关系,因此分析fd即可得到vr,不同频移与速度之间的关系如图2所示。
图2 多普勒频移fd与径向速度vr的关系
当目标与浮标相对静止时:vr=0、fr=ft、fd=0;当目标接近浮标时:vr>0,fr>ft,fd>0;当目标远离浮标时:vr<0,fr<ft,fd<0。
1.2 目标距离测量
CW信号测量目标距离是通过接收回波与发射信号的时间差来计算[3],根据1.1节所述,发射机发射单频信号,经目标反射后,接收机接收到回波信号,测得信号的往返时间差,对其取半即为单程时间差,通过距离计算公式得出:
如图3所示,时间t为信号往返时间差,根据式(4)即可计算出目标距离。
图3 CW信号测距原理
2 GSL实现思路
CPU采用的是“冯·诺依曼结构”,不同于DSP的“哈佛结构”,CPU未具备DSP的高速数据运算能力。但CPU性能较以前有了很大的提升:主频增加,数据总线宽度改善,还具有高速缓存,处理数据的能力大幅提高。借助一些科学计算库,可在CPU上高效实现主动全向浮标信号处理。GSL是一个开源的科学计算库,拥有大量C语言编写的科学计算函数,在数学运算上十分强大。在CPU上使用GSL,能够在一定程度上提升计算效率。
GSL具有快速傅里叶模块[4],提供了FFT函数:
该函数输入参数data可为长度为2n的double型数组,也可直接为长度n的gsl_complex数组;stride为步长;n为处理的复数个数;wavetable和workspace分配的存储空间,长度为n,用于放置变换过程中产生的中间数据,变换结束后,要将这两块存储空间进行释放,以免发生内存泄漏。该函数输出结果重新保存在data数组中,数据类型同输入。
根据以上输入输出的分析,FFT的处理步骤可以分为三个步骤,首先分配wavetable和workspace所需的空间,然后直接调用函数gsl_fft_complex_forward进行FFT处理,最后释放之前分配的空间。为方便使用,可将这三个步骤封装成一个函数。进行FFT处理,调用此函数即可完成,代码如下:
该函数输入参数a为一个向量结构体;b为长度相等的系数常向量结构体。该函数输出结果重新保存在向量a中。降采样低通滤波、复解调等处理步骤本质为向量相乘,都可通过此函数得到。
3 GSL实现方法
3.1 算法流程
算法流程见图4。为提高分辨率,减少运算量,首先对主动全向浮标信号进行降采样低通滤波。根据1.1节目标速度测量原理所述,径向速度可通过计算多普勒频移fd得到,复解调变换是将主动全向浮标回波信号消除载波的过程。FFT变换是将复解调和滤波后的时域信号转为频域。最后对其求模,通过以上处理就可得到多普勒频移fd。目标距离测量算法步骤同1.1节目标速度测量,目标距离与fd出现最大值的时间成正比。
图4 算法流程图
3.2 实现条件
硬件采用Intel I7 CPU处理器,主频3.50 GHz,8 GB内存,500 GB硬盘。软件采用Windows操作系统、Visual Studio2005开发工具。在进行开发之前,VS2005需配置GSL开发环境,分三步骤进行:(1)向VisualStudio C++项目代码中添加GSL的包含文件目录为:gsl/include;(2)在项目中增加GSL软件库文件:libgsl.lib和libgslcblas.lib;(3)在项目运行目录中增加动态链接库:libgsl.dll和libgslcblas.dll。
3.3 结果评价
采用200 ms的脉冲宽度,模拟目标距离4.00 km,目标径向速度6.00 kn。30 s时目标距离和速度的测量结果如图5所示。图中亮点对应的纵坐标为目标距离,横坐标为目标径向距离。目标速度为正,由此可知目标在以一定的速度靠近。具体预设值与测量值如表1所示。
图5 30 s时目标速度和距离的测量结果
表1 测量结果
通过对测量值和预设值比较可以看出,测量结果均在合理误差范围之内,基于GSL实现的主动全向浮标信号处理正确并且有效。与基于DSP平台的实现代码相比,基于GSL的代码规模减少了约15%;并且在开发过程中可以充分利用Visual Studio强大的调试功能,代码开发过程调试难度相对较小,缩短了开发周期,提高了效率。
4 结论
主动全向浮标能够测量目标距离和径向速度,在精准测定目标的方向上起到很大作用。本文将GSL科学计算库应用到主动全向浮标信号的仿真处理中,在CPU平台上正确实现了该算法的处理。结果显示,采用该方法减小了调试难度,缩短了开发周期。这对其它声呐浮标的处理仿真有相当大的借鉴意义。将GSL科学计算库应用到其它声呐浮标的处理算法中,也是作者下一步的研究方向。
[1]何心怡,邱志明,张春华,等.一种基于三枚主动全向浮标的水下目标定位方法[J].武汉理工大学学报,2007,(6):1021-1024.
[2]潘勤升.主动全向声呐浮标系统简介[J].声学与电子工程,1994,(1):39-41.
[3]田坦,刘国枝,孙大军.声呐技术[M].哈尔滨: 哈尔滨工程大学出版社,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.