R2017b之前的版本支持py2.7-py3.5,R2017b以及之后可支持py3.6
安装python关于MATLAB的扩展包
切换目录至 ~MATLAB\R2018b\extern\engines\python,执行下面命令
其中~MATLAB为MATLAB的安装目录
#非默认目录下安装,并把安装信息存至D:\MatlabForPython\files.txtpython setup.py build --build-base="D:\MatlabForPython" install --record D:\MatlabForPython\files.txt #默认目录下安装python setup.py install
准备工作
matlab文件 getFromMat.m
function a = getFromMat(x)a=[1 2 3; 4 5 6]x
导入包,并启动MATLAB引擎
>>> import matlab.engine>>> eng=matlab.engine.start_matlab()
python获取MATLAB的执行结果
需要将得到的值进行转化,才能得到array类型的数据
>>> mat=eng.getFromMat(1)a = 1 2 3 4 5 6x = int64 1>>> np.array(mat._data).reshape(mat.size[::-1]).Tarray([[1., 2., 3.], [4., 5., 6.]])
将python数据传入MATLAB函数
>>> aa=np.arange(9).reshape(3,3)>>> bb=matlab.int8(aa.tolist())>>> data=eng.triarea(bb)a = 1 2 3 4 5 6x = 3x3 int8 矩阵 0 1 2 3 4 5 6 7 8
完整代码
import matlab.engineimport numpy as npeng=matlab.engine.start_matlab()#得到matlab执行结果,并转化为array数据mat=eng.getFromMat(1)pymat=np.array(mat._data).reshape(mat.size[::-1]).T#将array数据转化为matlab.int,并传入matlab引擎aa=np.arange(9).reshape(3,3)bb=matlab.int8(aa.tolist())data=eng.triarea(bb)#关闭matlab引擎eng.quit()
,