加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在matlab中调用mathematica的函数

(2014-03-11 16:12:01)
标签:

it

分类: Programming

matlab的矩阵运算非常强大,而mathematica的数学函数比较丰富,为了将二者的优点结合起来,在此介绍在matlab中调用mathematica中函数的方法。

 

实验平台

1.win7 64位 旗舰版

2.matlab 2012a

3.mathematica 9.0 中文版

4.Mathematica Symbolic Toolbox for MATLAB--Version 2.0   

 

具体步骤

1.确认已经安装好Matlab和mathematica。

 

2.对于32位系统,将目录C:\Program Files\Wolfram Research\Mathematica\9.0\SystemFiles\Links\MathLink

\DeveloperKit\Windows\CompilerAdditions\mldev32\include中的mathlink.h和目录C:\Program Files\Wolfram 

Research\Mathematica\9.0\SystemFiles\Links\MathLink\DeveloperKit\Windows\CompilerAdditions\mldev32

\lib中的ml32i1m.lib文件复制到一个新的文件夹。注意此方法未验证,需要32位版本的网友请自行测试。

 

对于64位系统,将目录C:\Program Files\Wolfram Research\Mathematica\9.0\SystemFiles\Links\MathLink

\DeveloperKit\Windows-x86-64\CompilerAdditions\mldev64\include中的mathlink.h和目录C:\Program Files

\Wolfram Research\Mathematica\9.0\SystemFiles\Links\MathLink\DeveloperKit\Windows-x86-64\CompilerAdditions\mldev64\lib中的ml64i3m.lib复制到一个新的文件夹。注意lib文件夹中有多个问题,可能对应于不同的处理器型号,可以随便选择一个能通过下面的编译即可。在本例中,我们将以上两个文件放入C:\mathematica_for_matlab目录。

 

3.将下载好的Mathematica Symbolic Toolbox for MATLAB--Version 2.0文件中的math.c和mathrun.m也放入同一文件夹。

 

4.对于64位的matlab,默认是不安装C语言编译器的。对于32位,默认安装的是lcc,无法编译对应的math.c文件。所以,无论32位还是64位,推荐下载免费的Microsoft Windows SDK 7.1,同时需要安装.NET Framework 4.0。如果安装过程中出现问题,可以参照http://blogs.msdn.com/b/windowssdk/archive/2009/09/16/windows-7-sdk-setup-common-installation-issues-and-fixes.aspx

 

5.打开matlab,输入mex -setup,选择对应的编译器,配置成功后,运行mathrun.m文件。编译成功后会出现math.mexw64文件。这样就可以使用了。

 

6.打开testscript.m文件进行测试。此时我们就可以使用math('')的方法来调用mathematica的函数了,注意在运行时,会弹出一个对话框,此时需要选择C:\Program Files\Wolfram Research\Mathematica\9.0文件下的math.exe程序。

 

Enjoy it!!

 

示例:

clear all
clc
tic
x=0:0.1:50;
y1=zeros(1,length(x));
ii=1;
for ii=1:length(x)
    math('matlab2math','x',x(ii));
    ytemp=math('BesselJ[0, x]');
    y1(ii)=str2double(ytemp(3:end-2));
end
figure(1)
x=0:0.1:50;
plot(x,y1,'r')
math('quit')
toc

tic
x=0:0.1:50;
y2=besselj(0,x);
figure(2)
plot(x,y2,'.b')
toc

 

运行结果:

Mathematica Kernel loading...
Mathematica Kernel quitting per your request...
Elapsed time is 2.207739 seconds.
Elapsed time is 0.079728 seconds.
>> 

http://image.sciencenet.cn/album/201304/02/082318lb307ysgs9b9qxz1.jpg

http://image.sciencenet.cn/album/201304/02/082320tba0w10woc0ac0cs.jpg

 

 

 

 参考资料:

1.http://www.mathworks.cn/support/compilers/R2012a/win64.html

http://blog.sciencenet.cn/static/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gifmathematica_for_matlab.rar

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有