标签(空格分隔): 学习笔记
MATLAB是矩阵语言,是为向量和矩阵操作设计的,一般来说,如果运算可以用向量或矩阵实现,其运算速度是非常快的。但若运算中涉及到大量的循环处理,MATLAB的速度的令人难以忍受的。解决方法之一为,当必须使用for循环时,把它写为MEX文件,这样不必在每次运行循环中的语句时MATLAB都对它们进行解释。
要使用MATLAB编译器,用户计算机上应用事先安装与MATLAB适配的以下任何一种ANSI C/C++编译器:
5.0、6.0版的MicroSoft Visual C++(MSVC)
5.0、5.2、5.3、5.4、5.5版的Borland C++
LCC(由MATLAB自带,只能用来产生MEX文件)
下面是安装与配置MATLAB编译器应用程序MEX的设置的步骤:
(1)在MATLAB命令窗口中运行mex –setup,出现下列提示:
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n?
(2)选择y,MATLAB将自动搜索计算机上已安装的外部编译器的类型、版本及所在路径,并列出来让用户选择:
Select a compiler:
[1] Borland C++Builder version 6.0 in C:/PRogram Files/Borland
[2] Digital Visual Fortran version 6.0 in C:/Program Files/Microsoft Visual Studio
[3] Lcc C version 2.4 in D:/MATLAB6P5P1/sys/lcc
[4] Microsoft Visual C/C++ version 6.0 in C:/Program Files/Microsoft Visual Studio
[0] None
Compiler:
(3)选择其中一种(在这里选择了3),MATLAB让用户进行确认:
Please verify your choices:
Compiler: Lcc C 2.4
Location: D:/MATLAB6P5P1/sys/lcc
Are these correct?([y]/n):
(4)选择y,结束MATLAB编译器的配置。
在上述代码中,mexFunction是matlab调用c语言的接口函数,函数的输入时固定的,int nlhs表示左边参数的个数,这在matlab中是输出的个数, mxArray *plhs[]用来存放输出,新建是必须用矩阵的形式新建,如果输出只是一个数的话,也需要新建一个1*1大小的矩阵;同理,nrhs是输入的个数, mxArray *prhs[]用来存放输入。 对于输入,首先调用mxGetPr(prhs[])函数,获得输入的入口指针,第一个输入为 mxGetPr(prhs[0]),第二个输入为mxGetPr(prhs[1]),以此类推。如果右侧输入是一个数的话,可以采取下述形式
初次使用matlab的mex时,需要配置mex。在matlab参数行中输入mex -setup然后按照提示一步步配置完成后。输入mex ++++.cpp(需要mex的C语言文件名),之后就可以非常愉快的当做matlab的一个内置函数轻松调用了。
新闻热点
疑难解答