吳江華,王玲玲,周 元,付 林
(中國船舶重工集團公司第七二四研究所,南京 211153)
?
基于Matlab與VC++混合編程的雷達探測威力預(yù)測技術(shù)實現(xiàn)
吳江華,王玲玲,周元,付林
(中國船舶重工集團公司第七二四研究所,南京 211153)
應(yīng)用Matlab與VC++混合編程技術(shù),設(shè)計實現(xiàn)了雷達探測威力預(yù)測軟件。該軟件采用了模塊化的設(shè)計思想,實現(xiàn)基于海雜波的實時大氣波導(dǎo)特征估計及雷達探測威力預(yù)測。通過試驗驗證表明,該軟件性能良好,具有一定的工程應(yīng)用價值。
Matlab;VC++;混合編程;海雜波;雷達探測威力;大氣波導(dǎo)
目前,大部分現(xiàn)役裝備的艦載和岸基雷達可通過海洋大氣環(huán)境形成的低空超折射傳播和對流層散射傳播路徑實現(xiàn)目標(biāo)超視距探測。由于大氣波導(dǎo)特性的不同,往往對海上目標(biāo)的超視距探測效能上存在很大的差異。為了解和掌握海上低空大氣特性,實時準(zhǔn)確估計雷達探測威力,提升雷達作戰(zhàn)使用性能,需對海上低空大氣特性進行實時預(yù)報。
對雷達探測威力的估計主要有正演方法(基于氣象水文數(shù)據(jù)估計)及反演方法(基于海雜波反演)兩種方法。目前,正演方式存在以下問題:架設(shè)要求高、部隊陣地建設(shè)難度大;配合岸基雷達使用時存在受地形、海情的限制往往獲取海上氣象數(shù)據(jù)困難、使用受限問題;艦上/島上已有的氣象站數(shù)據(jù)不能滿足其算法要求;算法理論基于均勻海域,對非均勻海域預(yù)報誤差大等不足。反演方式彌補了正演方式的上述不足,因此本文采用反演方法。
反演方法算法復(fù)雜度高,開發(fā)難度大,周期長,且為了提高準(zhǔn)確率反演算法需達到一定的迭代次數(shù)。這勢必延長反演時間,代碼的執(zhí)行效率就尤為重要。反演方法可采用Matlab、VC++等方法實現(xiàn)。Matlab軟件的計算功能強大,然而其缺點也較明顯:創(chuàng)建圖形用戶界面的能力相對較弱;VC++是編譯性語言,以二進制代碼方式執(zhí)行,其執(zhí)行速度快但也存在固有的缺陷,許多復(fù)雜的數(shù)值計算在VC++中很難實現(xiàn),代碼量及開發(fā)難度均較大。兩相比較,VC++的界面友好,執(zhí)行速度高,但復(fù)雜算法實現(xiàn)相對困難;Matlab數(shù)值分析等能力較強,但創(chuàng)建界面能力及執(zhí)行效率低。因此,將兩者充分結(jié)合,進行混合編程,用VC++編寫界面,用Matlab實現(xiàn)復(fù)雜算法處理,所開發(fā)程序的執(zhí)行效率將大為提升[1]。
本文設(shè)計的利用海雜波進行雷達探測威力預(yù)測技術(shù)軟件系統(tǒng),采用模塊化以函數(shù)庫形式實現(xiàn)二進制重用,同時充分利用Matlab與VC++混合編程技術(shù),降低開發(fā)難度及周期,提升執(zhí)行效率,保證反演的準(zhǔn)確率及實時性。
利用海雜波進行雷達探測威力預(yù)測的技術(shù)理論基礎(chǔ)是國外的RFC技術(shù),其實現(xiàn)流程如圖 1所示。首先,假設(shè)蒸發(fā)波導(dǎo)模型用于表示大氣折射率的空間分布,同時需要確定環(huán)境參數(shù)的取值邊界。然后,根據(jù)電磁波傳播模型,并利用隨機環(huán)境參數(shù)計算出電磁波傳播的衰減因子,再根據(jù)海洋環(huán)境物理模型及海雜波模型,結(jié)合雷達的相關(guān)參數(shù)(包括天線垂直波束寬度、脈沖寬度、天線架高、工作波長、天線仰角、工作頻率、天線極化方式、天線類型、天線增益、發(fā)射功率、帶寬以及系統(tǒng)損耗)計算出離散化的海雜波回波強度隨距離的變化,并與實測的隨距離離散化的海雜波回波強度進行比對,在環(huán)境參數(shù)的取值范圍內(nèi)進行迭代搜索,直至得出環(huán)境參數(shù)的最優(yōu)解。最后,對蒸發(fā)波導(dǎo)模型進行不確定性估計,檢查基于最優(yōu)解的大氣折射率剖面與實測的大氣折射率剖面的符合程度。如果誤差較大,則修正蒸發(fā)波導(dǎo)模型,并重新反演[2]。
圖1 基于海雜波的大氣波導(dǎo)估計技術(shù)的實現(xiàn)流程圖
利用海雜波進行雷達探測威力預(yù)測的技術(shù)實現(xiàn),涉及多個特征參數(shù)邊界范圍內(nèi)的迭代計算、全局優(yōu)化搜索算法、拋物線方程迭代求解等復(fù)雜數(shù)學(xué)運算。本文采用Matlab與VC++進行混合編程,設(shè)計時采用VC++實現(xiàn)界面設(shè)計、圖形顯示、UDP網(wǎng)絡(luò)數(shù)據(jù)接收等。Matlab實現(xiàn)數(shù)據(jù)處理,利用Matlab遺傳算法包進行全局優(yōu)化搜索實現(xiàn)參數(shù)反演等。兩者有機結(jié)合,綜合實現(xiàn)反演算法,達到高準(zhǔn)確、準(zhǔn)實時、用戶界面友好等的要求。
1.1軟件模塊劃分
利用海雜波進行雷達探測威力預(yù)測技術(shù)軟件系統(tǒng)主要由數(shù)據(jù)接收預(yù)處理模塊、參數(shù)反演模塊及顯示模塊3個模塊組成。數(shù)據(jù)接收預(yù)處理模塊實時接收雷達回波數(shù)據(jù),進行海雜波數(shù)據(jù)提取與分離解算,統(tǒng)計其特征。參數(shù)反演模塊包含大氣折射率模型子模塊、海雜波模型子模塊、電磁波傳播子模塊、遺傳反演算法和不確定估計子模塊,主要實現(xiàn)折射率剖面參數(shù)估計,反演出蒸發(fā)波導(dǎo)的強度和高度,進而估計雷達最遠可探測距離。顯示模塊對計算結(jié)果以圖形的形式進行直觀顯示。軟件系統(tǒng)模塊圖如圖2。其中參數(shù)反演模塊采用Matlab與VC++混合編程實現(xiàn),顯示模塊采用庫函數(shù)形式實現(xiàn)二進制重用。
圖2 軟件系統(tǒng)模塊圖
1.2利用Matlab自帶編譯器MCC轉(zhuǎn)換實現(xiàn)參數(shù)反演模塊
目前,VC++調(diào)用Matlab主要使用的方式為將Matlab程序編譯為VC++可以調(diào)用的動態(tài)鏈接庫(DLL)。VC++調(diào)用的方法主要有兩種:動態(tài)方法和靜態(tài)方法。動態(tài)方法即采用win32API的LoadLibrary、LoadLibraryEx或AfiLoadLibrary加載該DLL文件,再使用GetProcAddress查找并返回想要調(diào)用的函數(shù)地址,最后完成對該函數(shù)的調(diào)用。該方法在執(zhí)行可執(zhí)行文件時不能脫離Matlab的運行環(huán)境,降低了實用性和執(zhí)行效率。靜態(tài)方法則在編譯時將執(zhí)行所需的庫函數(shù)納入動態(tài)庫內(nèi),執(zhí)行可執(zhí)行文件時擺脫Matlab的運行環(huán)境,彌補了上述不足。下文主要對利用Matlab自帶編譯器MCC轉(zhuǎn)換m文件為動態(tài)鏈接庫、VC++靜態(tài)調(diào)用該動態(tài)鏈接庫的方法進行詳述。
1.2.1Matlab編譯環(huán)境設(shè)置
(1) 配置MEX使用某版本VC為默認(rèn)的編譯器(為C-MEX文件必需)
啟動Matlab,運行:mex-setup,按照菜單提示選取VC版本。該步驟將安裝MatlabAdd-in所需文件到VC目錄。
(2) 配置使用VC為默認(rèn)的編譯器(創(chuàng)建獨立應(yīng)用程序必需)
在Matlab環(huán)境下運行:mbuild-setup,按提示選取VC版本。該步驟將安裝MatlabAdd-in所需的MatlabCompiler和C,C++數(shù)學(xué)庫文件到VC目錄。
上述兩個步驟將搜索安裝在本機上的C/C++編譯器并要求程序員指定哪個將與Matlab協(xié)同工作。程序員只要按照提示進行幾步選擇即可,配置工作由Matlab自動完成,其主要作用在于按照不同的C/C++編譯器版本,確定在源代碼轉(zhuǎn)換和生成時所應(yīng)遵循的語法規(guī)范。
(3) 配置操作系統(tǒng)環(huán)境
除配置Matlab外,開發(fā)工具所在的操作系統(tǒng)也要進行配置。需要給操作系統(tǒng)的環(huán)境變量(Windows7中為用戶變量和系統(tǒng)變量)的路徑加入Matlab的有關(guān)目錄,即指定Matlab的bin、binwin32、externlibwin32microsoft等幾個子目錄的位置。同時,應(yīng)在環(huán)境變量path中添加%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem。注意上述添加內(nèi)容應(yīng)增加在path中最前面,一般安裝的程序路徑應(yīng)在系統(tǒng)路徑的后面,否則會出現(xiàn)“ERRORusingmcc,returnstatus=1”的錯誤。
1.2.2利用Deployment Tool生成可供VC直接調(diào)用的動態(tài)鏈接庫
具體步驟如下:
(1) 在Matlab2008的命令窗口運行deploytool,在DeploymentTool中創(chuàng)建一個新的與C++交互的工程,工程名即為動態(tài)鏈接庫名。
(2) 在該工程下添加欲轉(zhuǎn)換的m文件。
(3) 在項目的設(shè)置中,將MCR添加到輸出結(jié)果中,以便在沒有安裝Matlab2008的計算機上也能運行。
(4) 選擇BuildtheProject,編譯完成后選擇PackagetheProject,在該項目路徑下會生成DLL文件。
如果選中了MCR,則會產(chǎn)生MyDOTNET_PlotData_pkg.exe文件。在沒安裝Matlab2008的計算機上可運行此文件,以便安裝Matlab2008的運行庫(只需安裝一次即可)。
1.2.3VC++調(diào)用Matlab生成的dll
具體步驟如下:
(1) 將生成的.lib和.dll文件拷貝至VC工程的dug下。
(2) 將生成的.h文件添加至VC工程的頭文件中。
項目屬性中,需設(shè)置C/C++“常規(guī)”中附加包含目錄添加Matlab的include路徑,鏈接器“常規(guī)”中附加包含目錄添加Matlab的lib路徑,鏈接器“輸入”GA.lib,mclmcrrt.lib,mclmcr.lib否則運行會出錯。
(3) 初始化動態(tài)鏈接庫
mclInitializeApplication(NULL,0);
(4) 加載動態(tài)鏈接庫
if(!bInit)
{
iReturn=GAInitialize();
bInit=TRUE;
}
(5) 釋放動態(tài)鏈接庫
GATerminate();
mclTerminateApplication();
(6)matlab與VC++數(shù)據(jù)交互示例
if(iReturn)
{
//VC向matlab傳入數(shù)值
floatnoiseScale= 11.1;
mwArraynoiseScaleInput(1,1,mxDOUBLE_CLASS);
noiseScaleInput.SetData(&noiseScale,1);
//VC向matlab傳入數(shù)組
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(傳出參數(shù)個數(shù),傳出參數(shù),各個傳入?yún)?shù)) Ga(nargout,hBest,MBest,SingalDataInput,noiseScaleInput); //matlab向VC傳出數(shù)值的獲取 hBest.GetData(h,1); MBest.GetData(M,1); } 1.3軟件運行效果 圖3為利用海雜波進行雷達探測威力預(yù)測系統(tǒng)軟件運行時Matlab遺傳算法迭代優(yōu)化搜索蒸發(fā)波導(dǎo)高度、強度的過程圖。圖4為軟件運行結(jié)果界面圖,分別顯示了大氣折射率剖面結(jié)果圖及雷達傳播損耗圖。 圖3 Matlab遺傳算法反演結(jié)果圖 圖4 VC++軟件界面圖 2.1試驗方法 對現(xiàn)有的海用超視距雷達探測試驗系統(tǒng)進行改造,形成海上環(huán)境探測系統(tǒng)。該系統(tǒng)主要由某雷達樣機、基于海雜波的雷達探測威力預(yù)測系統(tǒng)、高速數(shù)據(jù)采集分析儀和探空氣象儀組成,如圖5所示。本系統(tǒng)主要利用某雷達實現(xiàn)海上超視距主動探測;高速數(shù)據(jù)采集分析儀對雷達的回波數(shù)據(jù)進行采集、記錄,便于事后分析;利用探空氣象儀的實測數(shù)據(jù)對基于海雜波的雷達探測威力預(yù)測系統(tǒng)的結(jié)果進行比對驗證。 圖5 試驗系統(tǒng)組成及試驗方法示意圖 2.2試驗數(shù)據(jù)處理方法 2.2.1探空氣球數(shù)據(jù)處理方法 將探空氣球采集的隨高度分布的氣象數(shù)據(jù)剔除野點、校正高度后作平滑處理,利用折射率理論計算方法得出折射率剖面圖,計算蒸發(fā)波導(dǎo)高度值。該處理結(jié)果作為蒸發(fā)波導(dǎo)高度的真值。 2.2.2雷達回波數(shù)據(jù)處理方法 (1) 對采集的雷達回波數(shù)據(jù)進行平滑濾波,以抑制雷達系統(tǒng)噪聲; (2) 通過傅里葉變換計算多普勒頻移,并結(jié)合對雷達回波的空間分布、幅度統(tǒng)計特性、時間相關(guān)性、頻譜特性及時頻二維特性的分析,將海雜波數(shù)據(jù)從雷達回波數(shù)據(jù)中進行分離。該處理結(jié)果作為反演時全局優(yōu)化搜索的真值。 圖6 雷達回波數(shù)據(jù)處理流程 2.3試驗結(jié)果 該次試驗歷時一周,針對典型天氣進行試驗驗證。對該次試驗12組有效數(shù)據(jù)進行分析,雷達最遠可探測距離預(yù)測準(zhǔn)確率為78.5%(遺傳搜索迭代1000次,種群大小64,數(shù)據(jù)源5000個,平均反演時間10min),具體結(jié)果見表1。美國斯克利普斯研究所的海洋物理研究室PeterGerstoft研究的TPEM模型,其雷達最遠可探測距離預(yù)測準(zhǔn)確率為>80%(遺傳搜索迭代1000次,種群大小64,數(shù)據(jù)源5000個,平均反演時間1h)[4]。 如果單純地用C++來實現(xiàn),要得出上述結(jié)果,一條FFT語句需要近50條C++語言語句,單遺傳算法則需要幾十萬行C++代碼,開發(fā)難度大,且執(zhí)行效率難以控制,準(zhǔn)確率及實時性得不到保證。本文采用Matlab與VC++混合編程的技術(shù),在保證基本不降低準(zhǔn)確率的前提下,反演時間由1h縮短到10min,實時性得到了較大的提升。 表1 雷達最遠可探測距離預(yù)報值與實際值數(shù)據(jù)分析 后續(xù)可進一步開展試驗對各模型進行敏感性、適應(yīng)性分析并進行修正與系數(shù)調(diào)整等,在反演時間與準(zhǔn)確率之間實現(xiàn)最優(yōu)平衡,以實現(xiàn)準(zhǔn)實時、高準(zhǔn)確率估計。 Matlab與VC++的通信有助于發(fā)揮Matlab和VC++的各自優(yōu)勢,實現(xiàn)大數(shù)據(jù)復(fù)雜運算、網(wǎng)絡(luò)數(shù)據(jù)交互、友好圖形顯示及操控等功能,同時可提高程序執(zhí)行效率,降低開發(fā)難度。本文研究的基于Matlab與VC++混合編程的探測威力預(yù)測系統(tǒng)軟件,能夠滿足雷達探測威力估計對實時性及準(zhǔn)確率的要求,具有一定的工程應(yīng)用價值。Matlab與VC++混合編程技術(shù)為雷達數(shù)據(jù)處理及仿真等提供了新的技術(shù)途徑及分析手段。 [1]韋美雁.Matlab與VC的接口設(shè)計[J].湖南科技學(xué)院學(xué)報, 2006,5(27):111. [2]王玲玲,申宏亞,王向敏.基于海雜波的雷達探測效能估計技術(shù)[J].雷達與對抗,2013,9(32):111-112. [3]穆以東,趙嶺.VC++與Matlab混合編程方法研究[J].測控技術(shù),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-),女,工程師,碩士,研究方向:海雜波反演研究及軟件總體技術(shù);周元(1987-),女,工程師,碩士,研究方向:雷達顯示技術(shù)及軟件總體技術(shù);付林(1975-),男,研究員,博士,研究方向:雷達總體技術(shù)。 TP311.52 A 1009-0401(2016)03-0062-052 利用海雜波進行雷達探測威力預(yù)測技術(shù)軟件系統(tǒng)試驗驗證
3 結(jié)束語