Professional Documents
Culture Documents
ChineseResearchPages>Matlab>
MATLAB C
MATLAB
CMATLAB
CCC
MATLABMATLABCMEX
Cadd()MATLABc=add(a,b)ab
c=a+b
1.MATLABadd.c
2.Cadd()
3.mexFuncion()CMATLAB
4.MATLABadd.cMEX
5.MATLABadd()
add.c
SourceMEXFile
1.NewFileScript
2.add.c
3.add.c
add.c
MATLABmex.hinclude
1#include"mex.h"
1doubleadd(doublex,doubley){
2returnx+y
3}
ComputationalRoutine
MATLABMEXmexFunction()C
main()MEXmain()mexFunction()
mexFunction:
1voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){
2//
3}
https://sites.google.com/site/seanzhuxf/personalpage/matlab/mex 1/3
5/27/2017 MATLABCHomepageofXiaofengZhu
nlhs(numberoflefthandside)nrhs(numberofrighthandside)
c=add(a,b)nlhs=1hrhs=2
plhs[]prhs[]
mxArraymxArrayMATLABMATLAB
prhs[]prhs[0]aprhs[1]b*(prhs[0])a
prhs[0]mxArray
(Scalar)mxGetScalar()
1doublea,b
2a=mxGetScalar(prhs[0])
3b=mxGetScalar(prhs[1])
plhsplhs[0]c=add(a,b)cc
mxArraymxArraymxCreateDoubleMatrix()
mxArray
1plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL)
(1,1,mxREAL)cMATLABc11
mxGetPr()plhs[0]mxArraydouble
1double*c
2c=mxGetPr(plhs[0])
add()
1*c=add(a,b)
1 #include"mex.h"
2
3 doubleadd(doublex,doubley){
4 returnx+y
5 }
6
7 voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){
8 doublea,b
9 a=mxGetScalar(prhs[0])
10b=mxGetScalar(prhs[1])
11
12plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL)
13
14double*c
15c=mxGetPr(plhs[0])
16
17*c=add(a,b)
18}
https://sites.google.com/site/seanzhuxf/personalpage/matlab/mex 2/3
5/27/2017 MATLABCHomepageofXiaofengZhu
add.cMEX
MATLAB
1mexadd.c
MATLABMEX
MACOSXgcc4.0CommandnotfoundXcode
c=add(a,b)
MATLAB
1c=add(1,2)
mbuildsetup
mexc
Comments
Youdonothavepermissiontoaddcomments.
https://sites.google.com/site/seanzhuxf/personalpage/matlab/mex 3/3