吳江華,王玲玲,周 元,付 林
(中國船舶重工集團公司第七二四研究所,南京 211153)
?
基于Matlab與VC++混合編程的雷達探測威力預測技術實現
吳江華,王玲玲,周元,付林
(中國船舶重工集團公司第七二四研究所,南京 211153)
應用Matlab與VC++混合編程技術,設計實現了雷達探測威力預測軟件。該軟件采用了模塊化的設計思想,實現基于海雜波的實時大氣波導特征估計及雷達探測威力預測。通過試驗驗證表明,該軟件性能良好,具有一定的工程應用價值。
Matlab;VC++;混合編程;海雜波;雷達探測威力;大氣波導
目前,大部分現役裝備的艦載和岸基雷達可通過海洋大氣環境形成的低空超折射傳播和對流層散射傳播路徑實現目標超視距探測。由于大氣波導特性的不同,往往對海上目標的超視距探測效能上存在很大的差異。為了解和掌握海上低空大氣特性,實時準確估計雷達探測威力,提升雷達作戰使用性能,需對海上低空大氣特性進行實時預報。
對雷達探測威力的估計主要有正演方法(基于氣象水文數據估計)及反演方法(基于海雜波反演)兩種方法。目前,正演方式存在以下問題:架設要求高、部隊陣地建設難度大;配合岸基雷達使用時存在受地形、海情的限制往往獲取海上氣象數據困難、使用受限問題;艦上/島上已有的氣象站數據不能滿足其算法要求;算法理論基于均勻海域,對非均勻海域預報誤差大等不足。反演方式彌補了正演方式的上述不足,因此本文采用反演方法。
反演方法算法復雜度高,開發難度大,周期長,且為了提高準確率反演算法需達到一定的迭代次數。這勢必延長反演時間,代碼的執行效率就尤為重要。反演方法可采用Matlab、VC++等方法實現。Matlab軟件的計算功能強大,然而其缺點也較明顯:創建圖形用戶界面的能力相對較弱;VC++是編譯性語言,以二進制代碼方式執行,其執行速度快但也存在固有的缺陷,許多復雜的數值計算在VC++中很難實現,代碼量及開發難度均較大。兩相比較,VC++的界面友好,執行速度高,但復雜算法實現相對困難;Matlab數值分析等能力較強,但創建界面能力及執行效率低。因此,將兩者充分結合,進行混合編程,用VC++編寫界面,用Matlab實現復雜算法處理,所開發程序的執行效率將大為提升[1]。
本文設計的利用海雜波進行雷達探測威力預測技術軟件系統,采用模塊化以函數庫形式實現二進制重用,同時充分利用Matlab與VC++混合編程技術,降低開發難度及周期,提升執行效率,保證反演的準確率及實時性。
利用海雜波進行雷達探測威力預測的技術理論基礎是國外的RFC技術,其實現流程如圖 1所示。首先,假設蒸發波導模型用于表示大氣折射率的空間分布,同時需要確定環境參數的取值邊界。然后,根據電磁波傳播模型,并利用隨機環境參數計算出電磁波傳播的衰減因子,再根據海洋環境物理模型及海雜波模型,結合雷達的相關參數(包括天線垂直波束寬度、脈沖寬度、天線架高、工作波長、天線仰角、工作頻率、天線極化方式、天線類型、天線增益、發射功率、帶寬以及系統損耗)計算出離散化的海雜波回波強度隨距離的變化,并與實測的隨距離離散化的海雜波回波強度進行比對,在環境參數的取值范圍內進行迭代搜索,直至得出環境參數的最優解。最后,對蒸發波導模型進行不確定性估計,檢查基于最優解的大氣折射率剖面與實測的大氣折射率剖面的符合程度。如果誤差較大,則修正蒸發波導模型,并重新反演[2]。

圖1 基于海雜波的大氣波導估計技術的實現流程圖
利用海雜波進行雷達探測威力預測的技術實現,涉及多個特征參數邊界范圍內的迭代計算、全局優化搜索算法、拋物線方程迭代求解等復雜數學運算。本文采用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.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 雷達最遠可探測距離預報值與實際值數據分析 后續可進一步開展試驗對各模型進行敏感性、適應性分析并進行修正與系數調整等,在反演時間與準確率之間實現最優平衡,以實現準實時、高準確率估計。 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

2 利用海雜波進行雷達探測威力預測技術軟件系統試驗驗證



3 結束語