一种基于GSL的吊放声纳信号处理实现方法
2021-07-06宋飞飞许弋慧
宋飞飞 许弋慧
中国船舶第七一五研究所,浙江杭州 310012
0 前言
吊放声纳是海军反潜直升机对水下目标进行探测的重要装备,主要用于对潜艇的搜索、定位、识别及跟踪[1]。吊放声纳根据接收的回波声信号,采用多种算法获取目标的参数信息,可以及时、准确地搜索指定海域内的敌方潜艇[2]。
吊放声纳信号处理算法一般基于DSP(digital signal processing)实现,但DSP价格高,开发周期长[3],在算法仿真及验证阶段,该方法存在一定的困难。仿真系统往往以通用CPU作为平台,而普通CPU处理高速数据能力有限,本文着重研究了一种基于GSL科学计算库的吊放声纳信号处理方法在CPU上的高效实现。仿真数据比对结果验证了该方法的正确性和有效性。
1 算法原理
吊放声纳发射某种形式的声信号,在声纳作用距离内,发射脉冲在水中传播,遇到某一目标,经反射产生回波信号,水下基阵接收回波声信号和背景噪声[4]进行信号处理,获取目标的距离、方位等信息。HFM双曲调频信号为常用的发射信号,其信号波形与频谱如图1所示。
1.1 目标距离测量
HFM信号测量目标距离是通过接收回波与发射信号的时间差来计算[5],发射机发射HFM信号,一旦经目标反射,接收机接收到回波信号,测得信号的往返时间差,对其取半即为单程时间差,通过距离计算公式得出:
其中,c ——声速;
t ——信号往返时间差。
根据式(1)即可计算出目标距离。
1.2 目标方位测量
吊放声纳对接收的目标回波信号进行处理,在波束形成结果中搜寻最大值,该最大值所在的波束角作为目标的粗方位。根据预成波束计算获取标准测向表,利用最大值所在的波束号及其相邻2个波束数据(共3个值)与标准测向表对应的值进行欧氏距离计算,如式(2)、式(3)所示。
其中,X(n0)、X(n0-1)、X(n0+1)——最大值所在波束号及其相邻2个波束的数据;
Δθ' ——设定的偏差角分值;
D1(Δθ')、D2(Δθ')——d1、d2的理论计算值(标准测向表对应的值)。
将欧氏距离r(Δθ')最小值所对应的标准测向表中的角度数作为修正量,粗方位+修正量即为该目标的方位。
2 GSL设计思路
信号处理算法通常基于DSP芯片来实现,但DSP芯片价格高,开发周期长,因此,在算法仿真及验证阶段,使用该方法存在一定的困难。现在CPU相较以前性能有了很大的提升,再借助一些科学计算库,在CPU上就可高效实现吊放声纳信号处理算法。
GSL是专门为应用数学和科学技术领域的数值计算提供支持的软件库,该函数库提供了广泛的数学算法的实现函数,提供超过1,000个函数,这些函数包含的范围有:复数计算、多项式求根、特殊函数、向量和矩阵运算、排列、组合、排序、线性代数、特征值和特征向量、快速傅立叶变换(FFT)、数值积分、随机数生成、随机数分布、统计、蒙特卡洛积分等。
吊放声纳信号处理中,FFT运算可调用GSL中的快速傅里叶模块,分为3个步骤进行:首先,分配wavetable和workspace所需的空间;然后,调用函数gsl_fft_complex_forward;最后,释放之前分配的空间。为方便使用,将这3个步骤封装成一个函数,代码如下所示。
其中,函数gsl_fft_complex_forward的参数data为输入输出所共用,不利于后期软件调试。因此,在封装函数时分别定义了输入输出数组,并在调用函数gsl_fft_complex_forward前将输入数组搬移至输出数组,从而避免处理过程中输入数组数据被覆盖的问题。
吊放声纳信号处理中的复解调、降采样低通滤波、频域波束形成等运算可调用GSL的向量与矩阵模块,涉及到的函数为向量相乘函数、向量搬移函数、向量求模函数等,根据各个函数的运算特点进行封装即可使用。对函数进行封装,不仅避免对GSL底层函数的直接调用,减少了开发人员的工作量,而且具有很好的移植性。
3 GSL实现方法
3.1 算法流程
算法流程图如图2所示。首先,对吊放声纳回波信号进行复解调,消除载波的影响;接着,对信号进行降采样低通滤波,提高分辨率,减少运算量,降采样滤波完成后,进行FFT变换,在频域做波束形成、谱线选择、匹配相关;最后,对其进行逆快速傅里叶变换(inverse fast fourier transform,IFFT)。通过以上运算可得到HFM信号处理结果,根据1.1节的目标距离测量和1.2节的目标方位测量原理所述,对HFM信号处理结果进行处理即可获取目标距离和目标方位。
3.2 实现条件
在Intel x86硬件平台进行验证,CPU为i7-4770,内存为16 G,操作系统为Windows,开发工具为Visual Studio 2005。
在进行开发之前,VS2005需配置GSL开发环境,分3个步骤进行[3]:
(1)向Visual Studio C++项目代码中添加GSL的包含文件目录为gsl/include;
(2)在项目中增加GSL软件库文件libgsl.lib和libgslcblas.lib;
(3)在项目运行目录中增加动态链接库libgsl.dll和libgslcblas.dll。
3.3 实验验证
设置2个模拟目标,目标1距离为3 km,方位为255°,目标2距离为5 km,方位为135°,仿真信号采用脉冲宽度为300 ms的HFM,信号处理结果如图3所示。
图中对应的纵坐标为目标距离,横坐标为目标方位,从图中可以看出,两目标对应的距离、方位与预设值相符。其他预设值与测量值如表1所示。
表1 测量结果
由表1可以看出,预设值与实测值的误差均在合理范围之内,本文研究的基于GSL实现吊放声纳信号处理方法能正确且有效地估算出目标的参数信息。
对比基于DSP平台的实现方法,基于GSL的实现方法具有以下几个优点:
1、代码规模减少了约15%;
2、开发人员可以充分利用Visual Studio强大的调试功能降低调试难度,减少工作量,缩短开发周期;
3、可移植性,对GSL的库函数进行二次封装,通过不同的编译宏隔离,对硬件平台进行屏蔽。
4 结束语
本文对吊放声纳信号处理算法原理进行了简单介绍,着重对GSL的设计思路和实现方法进行了说明。实验结果表明,基于GSL信号处理算法的实现方法具有实用性,且在满足算法仿真的正确性和有效性的前提下降低了利用DSP芯片开发的开发成本和周期,同时,也降低了直接利用CPU实现算法的运算时间,但该方法数据处理耗时较DSP平台长,需进一步改进。