国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Matlab和C混合編程的火炮精度數(shù)據(jù)處理軟件實(shí)現(xiàn)

2014-11-07 11:07胡春曉石巖
現(xiàn)代電子技術(shù) 2014年21期
關(guān)鍵詞:火炮

胡春曉+石巖

摘 要: 為解決某火炮動(dòng)態(tài)精度試驗(yàn)數(shù)據(jù)處理任務(wù)急需,綜合Matlab和C兩種編程語(yǔ)言的優(yōu)勢(shì),采用MEX文件實(shí)現(xiàn)Matlab和C混合編程的方法,通過(guò)在Matlab中調(diào)用解彈道積分和目標(biāo)解相遇兩個(gè)C程序模塊,高效方便地完成了火炮動(dòng)態(tài)精度試驗(yàn)數(shù)據(jù)處理軟件的開發(fā)。測(cè)試和應(yīng)用結(jié)果表明該方法可以顯著提高編程效率、程序代碼復(fù)用率和程序執(zhí)行效率,具有很強(qiáng)的應(yīng)用參考價(jià)值。

關(guān)鍵詞: 火炮; 動(dòng)態(tài)精度試驗(yàn); 數(shù)據(jù)處理軟件; Matlab; C編程語(yǔ)言; 混合編程

中圖分類號(hào): TN919.5?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)21?0035?03

Implementation of gun accuracy data processing software

based on mixed programming of Matlab and C

HU Chun?xiao, SHI Yan

(94 Detachment, Unit 92941 of PLA, Huludao 125000, China)

Abstract: In order to fulfill the urgent task of gun dynamic accuracy test data processing, the mixed programming method was realized with MEX file by compositing the advantages of the Matlab and C programming language. The development of the gun dynamic accuracy test data processing software was achieved efficiently and easily by calling two C program modules for solution trajectory integral and meeting solution. The testing and application results show that this method can improve the efficiency of programming, program code reuse rate and the execution efficiency, and it has a strong reference value for application.

Keywords: gun; dynamic accuracy test; data processing software; Matlab; C programming language; mixed programming

0 引 言

動(dòng)態(tài)精度是火炮武器系統(tǒng)設(shè)計(jì)定型階段的一項(xiàng)重要考核指標(biāo),一般由靶場(chǎng)根據(jù)武器對(duì)典型目標(biāo)的校飛試驗(yàn)數(shù)據(jù)解算得出[1],其結(jié)果情況往往是決定后續(xù)射擊精度等試驗(yàn)?zāi)芊耥樌_展的重要參照。而隨著靶場(chǎng)試驗(yàn)通信指揮和綜合測(cè)控裝備信息化程度的不斷提高,武器裝備試驗(yàn)呈現(xiàn)出任務(wù)急、節(jié)奏快、周期短、要求嚴(yán)等發(fā)展趨勢(shì)[2],因此能否根據(jù)不同試驗(yàn)任務(wù)需求,選擇合適的編程語(yǔ)言和方法,快速高效地完成數(shù)據(jù)處理軟件的編制和測(cè)試工作顯得尤為重要。

Matlab是一款優(yōu)秀的科技應(yīng)用數(shù)學(xué)軟件,具有強(qiáng)大的矩陣運(yùn)算、數(shù)值計(jì)算、圖形顯示和數(shù)據(jù)分析處理功能,另外它包含了眾多專業(yè)領(lǐng)域的分析函數(shù)庫(kù)和工具包,在很多實(shí)際編程應(yīng)用中具有簡(jiǎn)單實(shí)用、方便高效的優(yōu)勢(shì),但由于Matlab是一種解釋性腳本語(yǔ)言,在執(zhí)行大規(guī)模重復(fù)性循環(huán)迭代運(yùn)算時(shí)存在效率低下的不足[3]。而C作為目前應(yīng)用最廣泛的編譯性語(yǔ)言,具有執(zhí)行效率高的特點(diǎn),特別是在進(jìn)行多層嵌套循環(huán)運(yùn)算時(shí)其優(yōu)勢(shì)更加明顯。但由于C語(yǔ)言缺乏豐富的數(shù)學(xué)函數(shù)庫(kù)和各工程領(lǐng)域應(yīng)用工具箱等,讀取數(shù)據(jù)、顯示圖形等也不方便,這使得其在科學(xué)計(jì)算及工程應(yīng)用領(lǐng)域的開發(fā)比較復(fù)雜,代價(jià)較高[4]。采用Matlab和C混合編程方法,通過(guò)Matlab的GUIDE開發(fā)設(shè)計(jì)軟件用戶界面,利用Matlab中豐富的數(shù)據(jù)處理函數(shù)和圖形顯示庫(kù)完成精度數(shù)據(jù)的處理分析,而對(duì)計(jì)算效率要求較高的彈道積分、解命中迭代等解算模塊則通過(guò)C語(yǔ)言編制MEX接口函數(shù)交由Matlab調(diào)用實(shí)現(xiàn)。這樣可以綜合兩種編程語(yǔ)言的優(yōu)點(diǎn),大大提高編程和程序運(yùn)行效率,方便高效地編制出實(shí)用的數(shù)據(jù)處理軟件。

1 Matlab和C混合編程方法概述

Matlab和C混合編程主要解決兩種語(yǔ)言程序互相調(diào)用的問(wèn)題。常見的方法主要有以下幾種[5]:

(1) Matlab引擎。采用客戶機(jī)和服務(wù)器計(jì)算方式,C程序作為前端客戶機(jī),通過(guò)調(diào)用Matlab引擎,與后臺(tái)Matlab服務(wù)器連接,實(shí)現(xiàn)動(dòng)態(tài)通信。

(2) MCC編譯器,是Matlab自帶的編譯器,作用是將M文件轉(zhuǎn)化成C代碼,再將代碼用C編譯器編譯鏈接成可供C調(diào)用的動(dòng)態(tài)鏈接庫(kù)或獨(dú)立的應(yīng)用程序。

(3) Matlab數(shù)學(xué)函數(shù)LIB庫(kù)。Matlab提供了可供C語(yǔ)言調(diào)用的數(shù)學(xué)函數(shù)庫(kù)和庫(kù)函數(shù)的接口函數(shù),有助于在C程序中快速實(shí)現(xiàn)Matlab已有的算法調(diào)用。

(4) MEX文件。MEX文件是用C語(yǔ)言按照一定格式編寫后,用C編譯器編譯成的動(dòng)態(tài)鏈接庫(kù)。Matlab直接把MEX文件視為它的內(nèi)建函數(shù)進(jìn)行調(diào)用并執(zhí)行。

2 基于MEX接口函數(shù)實(shí)現(xiàn)解彈道積分模塊

解彈道微分方程組是火炮動(dòng)態(tài)精度數(shù)據(jù)處理軟件解理論諸元中最重要的一環(huán),一般通過(guò)龍格?庫(kù)塔數(shù)值積分法解算,由于計(jì)算量較大,直接采用Matlab編寫的程序運(yùn)行速度非常慢,通過(guò)把耗時(shí)長(zhǎng)的函數(shù)用C語(yǔ)言實(shí)現(xiàn)并編譯成MEX函數(shù),可以不必在每次運(yùn)行循環(huán)中的語(yǔ)句時(shí)都對(duì)它們進(jìn)行解釋,從而加快執(zhí)行速度[6],而且每型火炮在設(shè)計(jì)定型階段都有經(jīng)過(guò)充分驗(yàn)證的解彈道積分C程序模塊,可以直接調(diào)用,減少重復(fù)性工作。本文通過(guò)編寫MEX接口函數(shù)實(shí)現(xiàn)在Matlab程序中對(duì)已有解彈道積分C程序模塊的調(diào)用,實(shí)現(xiàn)步驟如下:

2.1 編譯器的安裝與配置

由于Matlab默認(rèn)不帶C語(yǔ)言編譯器,要編譯MEX函數(shù),用戶計(jì)算機(jī)上應(yīng)該事先安裝適配的ANSI C編譯器,下面是安裝與配置Matlab編譯器應(yīng)用程序MEX的設(shè)置的步驟[7]:

(1) 在Matlab 命令窗口中運(yùn)行mex?setup,出現(xiàn)下列提示:

Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n?

(2) 選擇y,Matlab將自動(dòng)搜索計(jì)算機(jī)上已安裝的外部編譯器的類型、版本及所在路徑,并列出來(lái)讓用戶選擇:

Select a compiler:

[1] Borland C++Builder version 6.0 in C:\Program Files\Borland

[2] Lcc C version 2.4 in D:\Matlab7.1\sys\lcc

[3] Microsoft Visual C version 6.0 in C:\Program Files\Microsoft Visual Studio

[0] None

Compiler:

(3) 選擇其中一種(這里選擇2)進(jìn)行確認(rèn):

Please verify your choices:

Compiler: Microsoft Visual C version 6.0

Location: C:\Program Files\Microsoft Visual Studio

Are these correct?([y]/n):

(4) 選擇y,結(jié)束Matlab 編譯器的配置。

2.2 編寫彈道積分模塊MEX接口文件

MEX接口文件是由原C代碼加上MEX接口函數(shù)組成,它實(shí)現(xiàn)了一種接口,把在Matlab中調(diào)用函數(shù)時(shí)輸入的自變量通過(guò)特定的接口調(diào)入了C函數(shù),得出的結(jié)果再通過(guò)該接口調(diào)回Matlab[8]。按照Matlab的MEX接口規(guī)范[9],在原解彈道積分C程序模塊的基礎(chǔ)上編寫MEX接口文件BallIntegral.c如下:

#include "mex.h"

#include "ball_integral.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

{

double

*Bullet; /* 彈種: 0?榴彈, 1? 穿甲彈 */

*Gam, /* 方位角(rad) */

*Phi, /* 射角(rad) */

*dfTf, /* 彈丸飛行時(shí)間(s) */

*dfW, /* 風(fēng)速(m/s) */

*dfBw, /* 風(fēng)向(rad) */

*dfKv0, /* 初速修正量(%) */

*dfKtz, /* 藥溫修正量("C)*/

*dfT0, /* 地面溫度("C) */

*dfP0, /* 地面氣壓(百帕) */

*dfH0; /* 地面相對(duì)濕度(%) */

double *dfX,*dfY,*dfZ; /* 地面坐標(biāo)系彈道點(diǎn)坐標(biāo)位置 */

Bullet=mxGetPr(prhs[0]);

Gam=mxGetPr(prhs[1]);

Phi=mxGetPr(prhs[2]);

dfTf=mxGetPr(prhs[3]);

dfW=mxGetPr(prhs[4]);

dfBw=mxGetPr(prhs[5]);

dfKv0=mxGetPr(prhs[6]);

dfKtz=mxGetPr(prhs[7]);

dfT0=mxGetPr(prhs[8]);

dfP0=mxGetPr(prhs[9]);

dfH0=mxGetPr(prhs[10]);

plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);

plhs[1]=mxCreateDoubleMatrix(1,1,mxREAL);

plhs[2]=mxCreateDoubleMatrix(1,1,mxREAL);

dfX=mxGetPr(plhs[0]);

dfY=mxGetPr(plhs[1]);

dfZ=mxGetPr(plhs[2]);

BallIntegral(&dfX,&dfY,&dfZ,*Bullet,*Gam,*Phi,*dfTf,*dfW,*dfBw,*dfKv0,*dfKtz,*dfT0,*dfP0,*dfH0);

/*解彈道積分模塊 */

}

以上代碼中mex.h為使用MEX文件必須包含的頭文件;

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])為Matlab的MEX接口函數(shù),負(fù)責(zé)完成C語(yǔ)言函數(shù)與Matlab之間的參數(shù)傳遞,其中nlhs為輸出參數(shù)數(shù)目,plhs為指向輸出參數(shù)的指針,nrhs為輸入?yún)?shù)數(shù)目,prhs為指向輸入?yún)?shù)的指針。

BallIntegral()為原解彈道積分程序模塊,包含在ball_integral.h頭文件中。

2.3 編譯MEX接口文件

將C文件mex BallIntegral.c,ball_integral.h放入Matlab工作空間,在命令窗口輸入命令:mex BallIntegral.c,即可完成MEX文件的編譯,生成可被Matlab直接調(diào)用的文件BallIntegral.mexw32。

3 火炮精度數(shù)據(jù)處理軟件實(shí)現(xiàn)與應(yīng)用

根據(jù)某火炮系統(tǒng)精度數(shù)據(jù)處理任務(wù)需求,應(yīng)用Matlab圖形用戶界面開發(fā)環(huán)境GUIDE提供的界面設(shè)計(jì)工具集設(shè)計(jì)火炮動(dòng)態(tài)精度數(shù)據(jù)處理軟件界面如圖1所示,界面中包含真值和錄取數(shù)據(jù)讀取、跟蹤雷達(dá)精度處理、火炮系統(tǒng)精度處理三個(gè)板塊,跟蹤雷達(dá)和火炮系統(tǒng)精度處理板塊中又分別包含基線參數(shù)和彈道氣象參數(shù)輸入?yún)^(qū)、精度結(jié)果統(tǒng)計(jì)顯示區(qū)和處理、查看、統(tǒng)計(jì)、保存操作按鈕區(qū)三部分。

圖1 火炮動(dòng)態(tài)精度數(shù)據(jù)處理軟件界面

分別用常用的Matlab庫(kù)函數(shù)編寫好各按鈕、文本框和選擇框的回調(diào)函數(shù),完成數(shù)據(jù)文件讀入、坐標(biāo)變換、基線修正、插值、精度統(tǒng)計(jì)、繪圖等函數(shù),并在求解火炮理論諸元時(shí)調(diào)用之前編譯好的解彈道積分和解相遇MEX函數(shù)模塊,最終完成精度數(shù)據(jù)處理軟件,應(yīng)用此數(shù)據(jù)處理軟件繪制的某航次的動(dòng)態(tài)精度試驗(yàn)結(jié)果曲線如圖2所示。

利用完成的精度數(shù)據(jù)處理軟件對(duì)歷次火炮武器系統(tǒng)靶場(chǎng)動(dòng)態(tài)精度試驗(yàn)數(shù)據(jù)進(jìn)行處理,得到的結(jié)果與以前試驗(yàn)數(shù)據(jù)處理結(jié)果相一致,而且在解理論諸元時(shí)軟件執(zhí)行效率明顯提高。

圖2 火炮動(dòng)態(tài)精度結(jié)果曲線

4 結(jié) 語(yǔ)

MEX文件提供了Matlab調(diào)用C語(yǔ)言程序的接口,使得Matlab調(diào)用C函數(shù)和調(diào)用Matlab的內(nèi)置函數(shù)一樣方便,當(dāng)已經(jīng)有用C編寫的大型程序時(shí),大可不必在Matlab中重寫,只需寫個(gè)MEX接口函數(shù)做成MEX文件,另外,針對(duì)Matlab程序中的部份計(jì)算瓶頸(如循環(huán)、迭代等),通過(guò)MEX文件用C語(yǔ)言實(shí)現(xiàn),可以大大提高運(yùn)行效率。本文把用MEX文件實(shí)現(xiàn)Matlab和C語(yǔ)言混合編程的方法應(yīng)用到某火炮動(dòng)態(tài)精度試驗(yàn)數(shù)據(jù)處理軟件中,將已有的解彈道積分程序模塊(C程序)和要做迭代處理的解相遇模塊通過(guò)C語(yǔ)言編寫MEX文件實(shí)現(xiàn),不僅提高了編程效率,而且提高了代碼的復(fù)用率和執(zhí)行速度,取得了非常好的應(yīng)用效果。

參考文獻(xiàn)

[1] 黃守訓(xùn),楊榜林,田穎,等.艦炮武器系統(tǒng)試驗(yàn)與鑒定[M].北京:國(guó)防工業(yè)出版社,2005.

[2] 楊榜林,岳全發(fā).軍事裝備試驗(yàn)學(xué)[M].北京:國(guó)防工業(yè)出版社,2002.

[3] 陳杰.Matlab寶典[M].北京:電子工業(yè)出版社,2007.

[4] 譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1999.

[5] 穆以東,趙嶺.VC++與Matlab混合編程方法研究[J].測(cè)控技術(shù),2013,32(9):111?116.

[6] 李天昀,葛臨東.綜述Matlab與VC++的交互編程[J].計(jì)算機(jī)仿真,2004,21(9):193?196.

[7] 楊高波,亓波.精通Matlab 7.0混合編程[M].北京:電子工業(yè)出版社,2006.

[8] 袁寶吉,周寶林,吳猛猛.基于Matlab接口編程的天體視位置解算[J].四川兵工學(xué)報(bào),2011,32(12):65?67.

[9] 劉維.精通Matlab與C/C++混合程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008.

BallIntegral()為原解彈道積分程序模塊,包含在ball_integral.h頭文件中。

2.3 編譯MEX接口文件

將C文件mex BallIntegral.c,ball_integral.h放入Matlab工作空間,在命令窗口輸入命令:mex BallIntegral.c,即可完成MEX文件的編譯,生成可被Matlab直接調(diào)用的文件BallIntegral.mexw32。

3 火炮精度數(shù)據(jù)處理軟件實(shí)現(xiàn)與應(yīng)用

根據(jù)某火炮系統(tǒng)精度數(shù)據(jù)處理任務(wù)需求,應(yīng)用Matlab圖形用戶界面開發(fā)環(huán)境GUIDE提供的界面設(shè)計(jì)工具集設(shè)計(jì)火炮動(dòng)態(tài)精度數(shù)據(jù)處理軟件界面如圖1所示,界面中包含真值和錄取數(shù)據(jù)讀取、跟蹤雷達(dá)精度處理、火炮系統(tǒng)精度處理三個(gè)板塊,跟蹤雷達(dá)和火炮系統(tǒng)精度處理板塊中又分別包含基線參數(shù)和彈道氣象參數(shù)輸入?yún)^(qū)、精度結(jié)果統(tǒng)計(jì)顯示區(qū)和處理、查看、統(tǒng)計(jì)、保存操作按鈕區(qū)三部分。

圖1 火炮動(dòng)態(tài)精度數(shù)據(jù)處理軟件界面

分別用常用的Matlab庫(kù)函數(shù)編寫好各按鈕、文本框和選擇框的回調(diào)函數(shù),完成數(shù)據(jù)文件讀入、坐標(biāo)變換、基線修正、插值、精度統(tǒng)計(jì)、繪圖等函數(shù),并在求解火炮理論諸元時(shí)調(diào)用之前編譯好的解彈道積分和解相遇MEX函數(shù)模塊,最終完成精度數(shù)據(jù)處理軟件,應(yīng)用此數(shù)據(jù)處理軟件繪制的某航次的動(dòng)態(tài)精度試驗(yàn)結(jié)果曲線如圖2所示。

利用完成的精度數(shù)據(jù)處理軟件對(duì)歷次火炮武器系統(tǒng)靶場(chǎng)動(dòng)態(tài)精度試驗(yàn)數(shù)據(jù)進(jìn)行處理,得到的結(jié)果與以前試驗(yàn)數(shù)據(jù)處理結(jié)果相一致,而且在解理論諸元時(shí)軟件執(zhí)行效率明顯提高。

圖2 火炮動(dòng)態(tài)精度結(jié)果曲線

4 結(jié) 語(yǔ)

MEX文件提供了Matlab調(diào)用C語(yǔ)言程序的接口,使得Matlab調(diào)用C函數(shù)和調(diào)用Matlab的內(nèi)置函數(shù)一樣方便,當(dāng)已經(jīng)有用C編寫的大型程序時(shí),大可不必在Matlab中重寫,只需寫個(gè)MEX接口函數(shù)做成MEX文件,另外,針對(duì)Matlab程序中的部份計(jì)算瓶頸(如循環(huán)、迭代等),通過(guò)MEX文件用C語(yǔ)言實(shí)現(xiàn),可以大大提高運(yùn)行效率。本文把用MEX文件實(shí)現(xiàn)Matlab和C語(yǔ)言混合編程的方法應(yīng)用到某火炮動(dòng)態(tài)精度試驗(yàn)數(shù)據(jù)處理軟件中,將已有的解彈道積分程序模塊(C程序)和要做迭代處理的解相遇模塊通過(guò)C語(yǔ)言編寫MEX文件實(shí)現(xiàn),不僅提高了編程效率,而且提高了代碼的復(fù)用率和執(zhí)行速度,取得了非常好的應(yīng)用效果。

參考文獻(xiàn)

[1] 黃守訓(xùn),楊榜林,田穎,等.艦炮武器系統(tǒng)試驗(yàn)與鑒定[M].北京:國(guó)防工業(yè)出版社,2005.

[2] 楊榜林,岳全發(fā).軍事裝備試驗(yàn)學(xué)[M].北京:國(guó)防工業(yè)出版社,2002.

[3] 陳杰.Matlab寶典[M].北京:電子工業(yè)出版社,2007.

[4] 譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1999.

[5] 穆以東,趙嶺.VC++與Matlab混合編程方法研究[J].測(cè)控技術(shù),2013,32(9):111?116.

[6] 李天昀,葛臨東.綜述Matlab與VC++的交互編程[J].計(jì)算機(jī)仿真,2004,21(9):193?196.

[7] 楊高波,亓波.精通Matlab 7.0混合編程[M].北京:電子工業(yè)出版社,2006.

[8] 袁寶吉,周寶林,吳猛猛.基于Matlab接口編程的天體視位置解算[J].四川兵工學(xué)報(bào),2011,32(12):65?67.

[9] 劉維.精通Matlab與C/C++混合程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008.

BallIntegral()為原解彈道積分程序模塊,包含在ball_integral.h頭文件中。

2.3 編譯MEX接口文件

將C文件mex BallIntegral.c,ball_integral.h放入Matlab工作空間,在命令窗口輸入命令:mex BallIntegral.c,即可完成MEX文件的編譯,生成可被Matlab直接調(diào)用的文件BallIntegral.mexw32。

3 火炮精度數(shù)據(jù)處理軟件實(shí)現(xiàn)與應(yīng)用

根據(jù)某火炮系統(tǒng)精度數(shù)據(jù)處理任務(wù)需求,應(yīng)用Matlab圖形用戶界面開發(fā)環(huán)境GUIDE提供的界面設(shè)計(jì)工具集設(shè)計(jì)火炮動(dòng)態(tài)精度數(shù)據(jù)處理軟件界面如圖1所示,界面中包含真值和錄取數(shù)據(jù)讀取、跟蹤雷達(dá)精度處理、火炮系統(tǒng)精度處理三個(gè)板塊,跟蹤雷達(dá)和火炮系統(tǒng)精度處理板塊中又分別包含基線參數(shù)和彈道氣象參數(shù)輸入?yún)^(qū)、精度結(jié)果統(tǒng)計(jì)顯示區(qū)和處理、查看、統(tǒng)計(jì)、保存操作按鈕區(qū)三部分。

圖1 火炮動(dòng)態(tài)精度數(shù)據(jù)處理軟件界面

分別用常用的Matlab庫(kù)函數(shù)編寫好各按鈕、文本框和選擇框的回調(diào)函數(shù),完成數(shù)據(jù)文件讀入、坐標(biāo)變換、基線修正、插值、精度統(tǒng)計(jì)、繪圖等函數(shù),并在求解火炮理論諸元時(shí)調(diào)用之前編譯好的解彈道積分和解相遇MEX函數(shù)模塊,最終完成精度數(shù)據(jù)處理軟件,應(yīng)用此數(shù)據(jù)處理軟件繪制的某航次的動(dòng)態(tài)精度試驗(yàn)結(jié)果曲線如圖2所示。

利用完成的精度數(shù)據(jù)處理軟件對(duì)歷次火炮武器系統(tǒng)靶場(chǎng)動(dòng)態(tài)精度試驗(yàn)數(shù)據(jù)進(jìn)行處理,得到的結(jié)果與以前試驗(yàn)數(shù)據(jù)處理結(jié)果相一致,而且在解理論諸元時(shí)軟件執(zhí)行效率明顯提高。

圖2 火炮動(dòng)態(tài)精度結(jié)果曲線

4 結(jié) 語(yǔ)

MEX文件提供了Matlab調(diào)用C語(yǔ)言程序的接口,使得Matlab調(diào)用C函數(shù)和調(diào)用Matlab的內(nèi)置函數(shù)一樣方便,當(dāng)已經(jīng)有用C編寫的大型程序時(shí),大可不必在Matlab中重寫,只需寫個(gè)MEX接口函數(shù)做成MEX文件,另外,針對(duì)Matlab程序中的部份計(jì)算瓶頸(如循環(huán)、迭代等),通過(guò)MEX文件用C語(yǔ)言實(shí)現(xiàn),可以大大提高運(yùn)行效率。本文把用MEX文件實(shí)現(xiàn)Matlab和C語(yǔ)言混合編程的方法應(yīng)用到某火炮動(dòng)態(tài)精度試驗(yàn)數(shù)據(jù)處理軟件中,將已有的解彈道積分程序模塊(C程序)和要做迭代處理的解相遇模塊通過(guò)C語(yǔ)言編寫MEX文件實(shí)現(xiàn),不僅提高了編程效率,而且提高了代碼的復(fù)用率和執(zhí)行速度,取得了非常好的應(yīng)用效果。

參考文獻(xiàn)

[1] 黃守訓(xùn),楊榜林,田穎,等.艦炮武器系統(tǒng)試驗(yàn)與鑒定[M].北京:國(guó)防工業(yè)出版社,2005.

[2] 楊榜林,岳全發(fā).軍事裝備試驗(yàn)學(xué)[M].北京:國(guó)防工業(yè)出版社,2002.

[3] 陳杰.Matlab寶典[M].北京:電子工業(yè)出版社,2007.

[4] 譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1999.

[5] 穆以東,趙嶺.VC++與Matlab混合編程方法研究[J].測(cè)控技術(shù),2013,32(9):111?116.

[6] 李天昀,葛臨東.綜述Matlab與VC++的交互編程[J].計(jì)算機(jī)仿真,2004,21(9):193?196.

[7] 楊高波,亓波.精通Matlab 7.0混合編程[M].北京:電子工業(yè)出版社,2006.

[8] 袁寶吉,周寶林,吳猛猛.基于Matlab接口編程的天體視位置解算[J].四川兵工學(xué)報(bào),2011,32(12):65?67.

[9] 劉維.精通Matlab與C/C++混合程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008.

猜你喜歡
火炮
在戰(zhàn)火中不斷淬煉的火炮
自帶火炮的小蟲
火炮也減肥
基于信息化條件下的火炮維修技術(shù)研究
烏拉爾車輛廠將建立一條自動(dòng)化生產(chǎn)線
國(guó)際軍火市場(chǎng)上的新寵
基于綜合法的火炮方向機(jī)齒輪傳動(dòng)誤差分析
冒著炮火拍大片
對(duì)《火炮》一文不妥之處的商榷
火炮
财经| 丹阳市| 新乡市| 龙州县| 清丰县| 东乌珠穆沁旗| 新和县| 苍山县| 五大连池市| 山东| 龙游县| 阳新县| 濮阳市| 河南省| 萨迦县| 泾川县| 伊宁县| 文山县| 丰都县| 应城市| 德清县| 三门峡市| 清新县| 铜山县| 咸阳市| 常宁市| 巨鹿县| 华坪县| 富顺县| 三河市| 安丘市| 那曲县| 天长市| 彭州市| 清苑县| 德州市| 巴青县| 小金县| 博白县| 新蔡县| 滕州市|