基于Matlab与VC++混合编程的雷达探测威力预测技术实现

2016-10-19 04:55吴江华王玲玲
雷达与对抗 2016年3期
关键词:雷达探测波导杂波

吴江华,王玲玲,周 元,付 林

(中国船舶重工集团公司第七二四研究所,南京 211153)



基于Matlab与VC++混合编程的雷达探测威力预测技术实现

吴江华,王玲玲,周元,付林

(中国船舶重工集团公司第七二四研究所,南京 211153)

应用Matlab与VC++混合编程技术,设计实现了雷达探测威力预测软件。该软件采用了模块化的设计思想,实现基于海杂波的实时大气波导特征估计及雷达探测威力预测。通过试验验证表明,该软件性能良好,具有一定的工程应用价值。

Matlab;VC++;混合编程;海杂波;雷达探测威力;大气波导

0 引 言

目前,大部分现役装备的舰载和岸基雷达可通过海洋大气环境形成的低空超折射传播和对流层散射传播路径实现目标超视距探测。由于大气波导特性的不同,往往对海上目标的超视距探测效能上存在很大的差异。为了解和掌握海上低空大气特性,实时准确估计雷达探测威力,提升雷达作战使用性能,需对海上低空大气特性进行实时预报。

对雷达探测威力的估计主要有正演方法(基于气象水文数据估计)及反演方法(基于海杂波反演)两种方法。目前,正演方式存在以下问题:架设要求高、部队阵地建设难度大;配合岸基雷达使用时存在受地形、海情的限制往往获取海上气象数据困难、使用受限问题;舰上/岛上已有的气象站数据不能满足其算法要求;算法理论基于均匀海域,对非均匀海域预报误差大等不足。反演方式弥补了正演方式的上述不足,因此本文采用反演方法。

反演方法算法复杂度高,开发难度大,周期长,且为了提高准确率反演算法需达到一定的迭代次数。这势必延长反演时间,代码的执行效率就尤为重要。反演方法可采用Matlab、VC++等方法实现。Matlab软件的计算功能强大,然而其缺点也较明显:创建图形用户界面的能力相对较弱;VC++是编译性语言,以二进制代码方式执行,其执行速度快但也存在固有的缺陷,许多复杂的数值计算在VC++中很难实现,代码量及开发难度均较大。两相比较,VC++的界面友好,执行速度高,但复杂算法实现相对困难;Matlab数值分析等能力较强,但创建界面能力及执行效率低。因此,将两者充分结合,进行混合编程,用VC++编写界面,用Matlab实现复杂算法处理,所开发程序的执行效率将大为提升[1]。

本文设计的利用海杂波进行雷达探测威力预测技术软件系统,采用模块化以函数库形式实现二进制重用,同时充分利用Matlab与VC++混合编程技术,降低开发难度及周期,提升执行效率,保证反演的准确率及实时性。

1 基本原理

利用海杂波进行雷达探测威力预测的技术理论基础是国外的RFC技术,其实现流程如图 1所示。首先,假设蒸发波导模型用于表示大气折射率的空间分布,同时需要确定环境参数的取值边界。然后,根据电磁波传播模型,并利用随机环境参数计算出电磁波传播的衰减因子,再根据海洋环境物理模型及海杂波模型,结合雷达的相关参数(包括天线垂直波束宽度、脉冲宽度、天线架高、工作波长、天线仰角、工作频率、天线极化方式、天线类型、天线增益、发射功率、带宽以及系统损耗)计算出离散化的海杂波回波强度随距离的变化,并与实测的随距离离散化的海杂波回波强度进行比对,在环境参数的取值范围内进行迭代搜索,直至得出环境参数的最优解。最后,对蒸发波导模型进行不确定性估计,检查基于最优解的大气折射率剖面与实测的大气折射率剖面的符合程度。如果误差较大,则修正蒸发波导模型,并重新反演[2]。

图1 基于海杂波的大气波导估计技术的实现流程图

2 基于Matlab与VC++混合编程技术的雷达探测威力预测软件实现

利用海杂波进行雷达探测威力预测的技术实现,涉及多个特征参数边界范围内的迭代计算、全局优化搜索算法、抛物线方程迭代求解等复杂数学运算。本文采用Matlab与VC++进行混合编程,设计时采用VC++实现界面设计、图形显示、UDP网络数据接收等。Matlab实现数据处理,利用Matlab遗传算法包进行全局优化搜索实现参数反演等。两者有机结合,综合实现反演算法,达到高准确、准实时、用户界面友好等的要求。

1.1软件模块划分

利用海杂波进行雷达探测威力预测技术软件系统主要由数据接收预处理模块、参数反演模块及显示模块3个模块组成。数据接收预处理模块实时接收雷达回波数据,进行海杂波数据提取与分离解算,统计其特征。参数反演模块包含大气折射率模型子模块、海杂波模型子模块、电磁波传播子模块、遗传反演算法和不确定估计子模块,主要实现折射率剖面参数估计,反演出蒸发波导的强度和高度,进而估计雷达最远可探测距离。显示模块对计算结果以图形的形式进行直观显示。软件系统模块图如图2。其中参数反演模块采用Matlab与VC++混合编程实现,显示模块采用库函数形式实现二进制重用。

图2 软件系统模块图

1.2利用Matlab自带编译器MCC转换实现参数反演模块

目前,VC++调用Matlab主要使用的方式为将Matlab程序编译为VC++可以调用的动态链接库(DLL)。VC++调用的方法主要有两种:动态方法和静态方法。动态方法即采用win32API的LoadLibrary、LoadLibraryEx或AfiLoadLibrary加载该DLL文件,再使用GetProcAddress查找并返回想要调用的函数地址,最后完成对该函数的调用。该方法在执行可执行文件时不能脱离Matlab的运行环境,降低了实用性和执行效率。静态方法则在编译时将执行所需的库函数纳入动态库内,执行可执行文件时摆脱Matlab的运行环境,弥补了上述不足。下文主要对利用Matlab自带编译器MCC转换m文件为动态链接库、VC++静态调用该动态链接库的方法进行详述。

1.2.1Matlab编译环境设置

(1) 配置MEX使用某版本VC为默认的编译器(为C-MEX文件必需)

启动Matlab,运行:mex-setup,按照菜单提示选取VC版本。该步骤将安装MatlabAdd-in所需文件到VC目录。

(2) 配置使用VC为默认的编译器(创建独立应用程序必需)

在Matlab环境下运行:mbuild-setup,按提示选取VC版本。该步骤将安装MatlabAdd-in所需的MatlabCompiler和C,C++数学库文件到VC目录。

上述两个步骤将搜索安装在本机上的C/C++编译器并要求程序员指定哪个将与Matlab协同工作。程序员只要按照提示进行几步选择即可,配置工作由Matlab自动完成,其主要作用在于按照不同的C/C++编译器版本,确定在源代码转换和生成时所应遵循的语法规范。

(3) 配置操作系统环境

除配置Matlab外,开发工具所在的操作系统也要进行配置。需要给操作系统的环境变量(Windows7中为用户变量和系统变量)的路径加入Matlab的有关目录,即指定Matlab的bin、binwin32、externlibwin32microsoft等几个子目录的位置。同时,应在环境变量path中添加%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem。注意上述添加内容应增加在path中最前面,一般安装的程序路径应在系统路径的后面,否则会出现“ERRORusingmcc,returnstatus=1”的错误。

1.2.2利用Deployment Tool生成可供VC直接调用的动态链接库

具体步骤如下:

(1) 在Matlab2008的命令窗口运行deploytool,在DeploymentTool中创建一个新的与C++交互的工程,工程名即为动态链接库名。

(2) 在该工程下添加欲转换的m文件。

(3) 在项目的设置中,将MCR添加到输出结果中,以便在没有安装Matlab2008的计算机上也能运行。

(4) 选择BuildtheProject,编译完成后选择PackagetheProject,在该项目路径下会生成DLL文件。

如果选中了MCR,则会产生MyDOTNET_PlotData_pkg.exe文件。在没安装Matlab2008的计算机上可运行此文件,以便安装Matlab2008的运行库(只需安装一次即可)。

1.2.3VC++调用Matlab生成的dll

具体步骤如下:

(1) 将生成的.lib和.dll文件拷贝至VC工程的dug下。

(2) 将生成的.h文件添加至VC工程的头文件中。

项目属性中,需设置C/C++“常规”中附加包含目录添加Matlab的include路径,链接器“常规”中附加包含目录添加Matlab的lib路径,链接器“输入”GA.lib,mclmcrrt.lib,mclmcr.lib否则运行会出错。

(3) 初始化动态链接库

mclInitializeApplication(NULL,0);

(4) 加载动态链接库

if(!bInit)

{

iReturn=GAInitialize();

bInit=TRUE;

}

(5) 释放动态链接库

GATerminate();

mclTerminateApplication();

(6)matlab与VC++数据交互示例

if(iReturn)

{

//VC向matlab传入数值

floatnoiseScale= 11.1;

mwArraynoiseScaleInput(1,1,mxDOUBLE_CLASS);

noiseScaleInput.SetData(&noiseScale,1);

//VC向matlab传入数组

intPutGaDataLength= 1500;

double*pSingalData;

pSingalData=NULL;

pSingalData=newdouble[PutGaDataLength];

for(inti=0;i

{

*(pSingalData+i) =i;

}

mwArraySingalDataInput(PutGaDataLength,1,mxDOUBLE_CLASS);

SingalDataInput.SetData(pSingalData,PutGaDataLength);

intnargout= 2;

mwArrayhBest(1,1,mxDOUBLE_CLASS);

h=newdouble;

mwArrayMBest(1,1,mxDOUBLE_CLASS);

M=newdouble;

//dll提供的接口,Ga(传出参数个数,传出参数,各个传入参数)

Ga(nargout,hBest,MBest,SingalDataInput,noiseScaleInput);

//matlab向VC传出数值的获取

hBest.GetData(h,1);

MBest.GetData(M,1);

}

1.3软件运行效果

图3为利用海杂波进行雷达探测威力预测系统软件运行时Matlab遗传算法迭代优化搜索蒸发波导高度、强度的过程图。图4为软件运行结果界面图,分别显示了大气折射率剖面结果图及雷达传播损耗图。

图3 Matlab遗传算法反演结果图

图4 VC++软件界面图

2 利用海杂波进行雷达探测威力预测技术软件系统试验验证

2.1试验方法

对现有的海用超视距雷达探测试验系统进行改造,形成海上环境探测系统。该系统主要由某雷达样机、基于海杂波的雷达探测威力预测系统、高速数据采集分析仪和探空气象仪组成,如图5所示。本系统主要利用某雷达实现海上超视距主动探测;高速数据采集分析仪对雷达的回波数据进行采集、记录,便于事后分析;利用探空气象仪的实测数据对基于海杂波的雷达探测威力预测系统的结果进行比对验证。

图5 试验系统组成及试验方法示意图

2.2试验数据处理方法

2.2.1探空气球数据处理方法

将探空气球采集的随高度分布的气象数据剔除野点、校正高度后作平滑处理,利用折射率理论计算方法得出折射率剖面图,计算蒸发波导高度值。该处理结果作为蒸发波导高度的真值。

2.2.2雷达回波数据处理方法

(1) 对采集的雷达回波数据进行平滑滤波,以抑制雷达系统噪声;

(2) 通过傅里叶变换计算多普勒频移,并结合对雷达回波的空间分布、幅度统计特性、时间相关性、频谱特性及时频二维特性的分析,将海杂波数据从雷达回波数据中进行分离。该处理结果作为反演时全局优化搜索的真值。

图6 雷达回波数据处理流程

2.3试验结果

该次试验历时一周,针对典型天气进行试验验证。对该次试验12组有效数据进行分析,雷达最远可探测距离预测准确率为78.5%(遗传搜索迭代1000次,种群大小64,数据源5000个,平均反演时间10min),具体结果见表1。美国斯克利普斯研究所的海洋物理研究室PeterGerstoft研究的TPEM模型,其雷达最远可探测距离预测准确率为>80%(遗传搜索迭代1000次,种群大小64,数据源5000个,平均反演时间1h)[4]。

如果单纯地用C++来实现,要得出上述结果,一条FFT语句需要近50条C++语言语句,单遗传算法则需要几十万行C++代码,开发难度大,且执行效率难以控制,准确率及实时性得不到保证。本文采用Matlab与VC++混合编程的技术,在保证基本不降低准确率的前提下,反演时间由1h缩短到10min,实时性得到了较大的提升。

表1 雷达最远可探测距离预报值与实际值数据分析

后续可进一步开展试验对各模型进行敏感性、适应性分析并进行修正与系数调整等,在反演时间与准确率之间实现最优平衡,以实现准实时、高准确率估计。

3 结束语

Matlab与VC++的通信有助于发挥Matlab和VC++的各自优势,实现大数据复杂运算、网络数据交互、友好图形显示及操控等功能,同时可提高程序执行效率,降低开发难度。本文研究的基于Matlab与VC++混合编程的探测威力预测系统软件,能够满足雷达探测威力估计对实时性及准确率的要求,具有一定的工程应用价值。Matlab与VC++混合编程技术为雷达数据处理及仿真等提供了新的技术途径及分析手段。

[1]韦美雁.Matlab与VC的接口设计[J].湖南科技学院学报, 2006,5(27):111.

[2]王玲玲,申宏亚,王向敏.基于海杂波的雷达探测效能估计技术[J].雷达与对抗,2013,9(32):111-112.

[3]穆以东,赵岭.VC++与Matlab混合编程方法研究[J].测控技术,2013,9(32):111-112.

[4]PeterGertoft.SAGAUserManual5.1:Aninversionsoftwarepackage[M].MarinePhysicalLaboratoryScrippsInstitutionofOceanographyUniversityofCaliforniaatSanDiego,2004.9.

ImplementationofradarcoveragepredictiontechnologybasedonMatlabandVC++hybridprogramming

WUJiang-hua,WANGLing-ling,ZHOUYuan,FULin

(No.724ResearchInstituteofCSIC,Nanjing211153)

TheradarcoveragepredictionsoftwareisdesignedandimplementedusingtheMatlabandVC++hybridprogrammingtechnology.Thesoftwareadoptsthemodularizeddesign,realizingreal-timefeatureestimationoftheatmosphericductandradarcoveragepredictionbasedontheseaclutters.Thetestresultsindicatethatthesoftwarehasgoodperformanceandhighengineeringapplicationvalue.

Matlab;VC++;hybridprogramming;seaclutter;radarcoverage;atmosphericduct

2016-05-10

吴江华(1985-),男,工程师,硕士,研究方向:海杂波反演研究;王玲玲(1984-),女,工程师,硕士,研究方向:海杂波反演研究及软件总体技术;周元(1987-),女,工程师,硕士,研究方向:雷达显示技术及软件总体技术;付林(1975-),男,研究员,博士,研究方向:雷达总体技术。

TP311.52

A

1009-0401(2016)03-0062-05

猜你喜欢
雷达探测波导杂波
STAR2000型空管一次雷达杂波抑制浅析
一种改进的基于背景自适应的杂波图算法
一种自适应双参数杂波图检测方法
某雷达杂波数据分析及杂波图技术研究
对飞行目标的多雷达探测问题的研究
基于检测前聚焦的临近空间高动态飞行器雷达探测研究
隐身飞机自卫干扰对雷达探测性能的影响
基于雷达技术的人身安全防护系统
一种带宽展宽的毫米波波导缝隙阵列单脉冲天线
一种L波段宽带圆波导密封窗的仿真设计