如何设置MATLAB编译器
1.对MEX进行配置
(1)启动配置,在命令窗口输入:
>> mex –setup
系统会出现下面的提示:
Welcome to mex -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2011a/win32.html
Please choose your compiler for building MEX-files:
Would you like mex to locate installed compilers [y]/n?
(2)启动MATLAB的自动定位系统:选择y,MEX将会自动搜索外部编译器的类型、版本以及所在路径。MATLAB会给出搜索的结果,也就是系统所安装的所有外部编译器,并提示输入相应的数字:
[1] Lcc-win32 C 2.4.1
[2] Microsoft Visual C++ 6.0
[3] Microsoft Visual C++ 2005 SP1
[4] Microsoft Visual C++ 2008 SP1
[5] Microsoft Visual C++ 2010
[6] Microsoft Visual C++ 2010 Express
[0] None
Compiler:
(3)确定选择的编译器类型:当用户直接按回车键,即是选择默认的编译器(Lcc)后,系统会提示用户确定选择:
Please verify your choices:
Compiler: Lcc-win32 C 2.4.1
Location: E:\MATLAB\sys\lcc
Are these correct [y]/n
(4)配置结束:如果上面的定位信息没有错误,可以输入y,确定选择,结束编译器的配置。
2.验证编译器的配置工作,编译MEX文件
(1)创建编译文件:前面已经对编译器进行了对应的配置,在本步骤中,需要验证这种配置工作是否正确。选择目录MATLAB根目录\R2012a\extern\examples\mex下的yprime.c文件,将其复制到当前路径中,该文件的具体代码如下:
#include <math.h>
#include “mex.h”
/* Input Arguments */
#define T_IN prhs[0]
#define Y_IN prhs[1]
/* Output Arguments */
#define YP_OUT plhs[0]
#if !defined(MAX)
#define MAX(A, B) ((A)> (B)? (A): (B))
#endif
…
/* Create a matrix for the return argument */
YP_OUT = mxCreateDoubleMatrix(m, n, mxREAL);
/* Assign pointers to the various parameters */
yp = mxGetPr(YP_OUT);
t = mxGetPr(T_IN);
y = mxGetPr(Y_IN);
/* Do the actual computations in a subroutine */
yprime(yp,t,y);
return;
(2)查看对应的M文件:上面的代码是MATLAB自带的MEX文件,对应的文件是yprime.m文件,具体代码如下:
function yp = yprime(t,y)
%YPRIME Define differential equations for restricted three-body problem.
% YP = YPRIME(T,Y)defines a system of ordinary differential
% equations representing the motion of a body of small mass
…
mu = 1/82.45;
mus = 1-mu;
r1 = norm([y(1)+mu, y(3)]); % Distance to the earth
r2 = norm([y(1)-mus, y(3)]); % Distance to the moon
yp(1)= y(2);
yp(2)= 2*y(4)+ y(1)- mus*(y(1)+mu)/r1^3 - mu*(y(1)-mus)/r2^3;
yp(3)= y(4);
yp(4)= -2*y(2)+ y(3)- mus*y(3)/r1^3 - mu*y(3)/r2^3;
% yp = yp’;
(3)直接运行MEX文件:在MATLAB的命令窗口输入:
>> mex yprime.c
>> yprime(1,1:4)
则显示结果为
ans =
2.0000 8.9685 4.0000 -1.0947
在上面代码中首先使用mex yprime.c,是将yprime.c生成yprime.dll文件,然后通过yprime(1,1:4)调用该yprime.dll文件并得到结果。
3.对其他编译器进行配置
在使用编译器前要先进行编译器的配置,在命令窗口输入:
>> mbuild-setup
用户需要注意,在函数mbuild和参数setup前的短横线“-”之间,需要有一个空格。显示的结果如下所示:
Welcome to mbuild -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2011a/win32.html
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n?
其含义是“请选择独立运行程序的编译器,是否需要mbuild查找已安装的编译器”,选择n后,命令窗口输出如下:
Select a compiler:
[1] Lcc-win32 C 2.4.1
[2] Microsoft Visual C++ 6.0
[3] Microsoft Visual C++ 2005 SP1
[4] Microsoft Visual C++ 2008 SP1
[5] Microsoft Visual C++ 2010
[6] Microsoft Visual C++ 2010 Express
[0] None
Compiler:
这里列出了MATLAB支持的通用编译器。此时显示了系统中已安装的编译器,Lcc-win32 C 2.4.1是MATLAB自带的C编译器,不能用来编译C++,选择1后命令窗口输出如下:
Please verify your choices:
Compiler: Lcc-win32 C 2.4.1
Location: E:\MATLAB\sys\lcc
Are these correct [y]/n?
选择y后,命令窗口输出如下:
Trying to update options file:
C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2011a\compopts.bat
From template: E:\MATLAB\bin\win32\mbuildopts\lcccompp.bat
Done . . .
至此,完成了编译器的安装和配置。按照上面的步骤完成的配置是具有永久性的,这些配置不会随着用户关闭程序而失效。这些配置工作又是可以修改的,用户可以随时根据版本情况,重新对编译器进行配置。