<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > Matlab與C/C++混合編程接口及應用

Matlab與C/C++混合編程接口及應用

作者: 時(shí)間:2012-08-27 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:具有很強的數值計算和分析等能力,而C/C++是目前最為流行的高級程序設計語(yǔ)言,兩者互補結合的在科學(xué)研究和工程實(shí)踐中具有非常重要的意義。從調用C/C++代碼及C/C++調用m文件兩方面,深入地研究了它們之間的原理和實(shí)現機制,并且給出了具體條件下的方法和步驟。實(shí)驗表明,給出的與C/C++混合編程及應用方法是有效、實(shí)用的。

本文引用地址:http://dyxdggzs.com/article/189994.htm

1 引言

Matlab 是當前應用最為廣泛的數學(xué)軟件,具有強大的數值計算、數據分析處理、系統 分析、圖形顯示甚至符號運算等功能[1]。利用這一完整的數學(xué)平臺,用戶(hù)可以快速實(shí)現十分 復雜的功能,極大地提高工程分析計算的效率[2][3]。但與其他高級程序[3]相比,Matlab 程序 是一種解釋執行程序,不用編譯等預處理,程序運行速度較慢[4]。

C/C++語(yǔ)言是目前最為流行的高級程序設計語(yǔ)言之一[5]。它可對操作系統和應用程序以 及硬件進(jìn)行直接操作,用C/C++語(yǔ)言明顯優(yōu)于其它解釋型高級語(yǔ)言,一些大型應用軟件如 Matlab 就是用C 語(yǔ)言開(kāi)發(fā)的。

在工程實(shí)踐中,用戶(hù)經(jīng)常遇到Matlab 與C/C++混合編程的問(wèn)題。本文基于Matlab 6.5和VC6.0 開(kāi)發(fā)環(huán)境,在Windows 平臺下就它們之間的混合編程問(wèn)題進(jìn)行深入研究并舉例說(shuō)明。

2 Matlab 調用C/C++

Matlab 調用C/C++的方式主要有兩種:利用MEX 技術(shù)和調用C/C++動(dòng)態(tài)連接庫。

在Matlab 與C/C++混合編程之前,必須先對Matlab 的編譯應用程序mex 和編譯器mbuild進(jìn)行正確的設置[1]:

對Matlab 編譯應用程序mex 的設置:Mex –setup.

對Matlab 編譯器mbuild 的設置:Mbuild –setup.

2.1 調用C/C++的MEX 文件

MEX 是Matlab Executable 的縮寫(xiě),它是一種“可在Matlab 中調用的C(或Fortran)語(yǔ) 言衍生程序”[6]。MEX 文件的使用極為方便,其調用方式與Matlab 的內建函數完全相同,只 需在Matlab 命令提示符下鍵入MEX 文件名即可。

一個(gè)C/C++的MEX源程序通常包括4個(gè)組成部分,其中前3個(gè)是必須包含的內容,第4個(gè)則根據所實(shí)現的功能靈活選用:(1)#include “mex.h”;(2)MEX文件的入口函數mexFunction, MEX文件導出名必須為mexFunction函數;(3)mxArray;(4)API函數

通過(guò)簡(jiǎn)單的例子說(shuō)明C/C++的MEX 源程序編寫(xiě)和調用過(guò)程:

#include mex.h

void timeSTwo(double y[], double x[])

{ y[0] = 2.0*x[0]; }

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

{ double *x,*y; int mrows,ncols;

if(nrhs!=1) mexErrMsgTxt(One input required.);

else if(nlhs>1) mexErrMsgTxt(Too many output arguments);

mrows = mxGetM(prhs[0]);ncols = mxGetN(prhs[0]);

if( !mxIsDouble(prhs[0])||mxIsComplex(prhs[0])||!(mrows==1 ncols==1))

mexErrMsgTxt(Input must be a noncomplex scalar double.);

plhs[0]=mxCreateDoubleMatrix(mrows,ncols, mxREAL);

x=mxGetPr(prhs[0]); y=mxGetPr(plhs[0]); timestwo(y,x); }

用指令mex timestwo.c 編譯此文件,然后在MATLAB 命令行下調用生成的MEX 文件即可。


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: Matlab 混合編程 接口

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>