Mathematica的笔记本功能可以保存计算结果,而Matlab是基于代码运算以取得计算结果,或者可以说属于批处理模式;结合二者的优点,则可以实现笔记本功能的交互式、可视化Matlab程序开发。此外,Matlab程序设计语言的相关知识,也可以移植到Mathematica中使用。
1 通讯组件
http://matlink.org/下载matlink,解压缩到在
SystemOpen@FileNameJoin[{$UserBaseDirectory, "Applications"}]( 上述命令在mathematica下运行).
将C:\Program Files\MATLAB\R2013a\bin\win64加入系统路径,以使得Matlink能够调用到Matlab的dll等.
2 在Mathematica中与matlab通信
在Mathematica中建立笔记本test.nb,内容为:
Needs["MATLink`"]; (*打开通信包*)
OpenMATLAB[]; (*建立与Matlab通信*)
cdd=NotebookDirectory[]; (*取得当前notebook的文件夹未知*)
MSet["cdd", cdd]; (*将此变量传入Matlab*)
MEvaluate["addpath(cdd)"]; (*将当前路径加入Matlab系统路径,以找到和调用当前文件夹下的Matlab程序*)
MEvaluate["mat = magic(4)"] (*尝试调用Matlab函数*)
mat=MGet["mat"] (*取得Matlab中的变量值*)
MSet["a", 3]; (*放入a变量*)
MSet["b", 5]; (*放入b变量*)
MEvaluate["add2(a, b)"] (*调用当前目录下Matlab函数add2实现两个数的加法运算*)
add=MFunction["add2"] (*取得当前目录下Matlab函数add2的地址*)
add[3,5] (*以Mathematica方式调用add2函数*)
CloseMATLAB[] (*关闭Matlab*)
3 Matlab加法函数add2.m
function val = add2(a, b)
val = a + b;
end
以上程序在win8+mathematica9+mathlab2013a下测试通过。