matlab读取python程序(如何使用Python调用MATLAB函数)
R2017b之前的版本支持py2.7-py3.5,R2017b以及之后可支持py3.6
安装python关于MATLAB的扩展包切换目录至 ~MATLAB\R2018b\extern\engines\python,执行下面命令
其中~MATLAB为MATLAB的安装目录
#非默认目录下安装,并把安装信息存至D:\MatlabForPython\files.txt python 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 6 x = int64 1 >>> np.array(mat._data).reshape(mat.size[::-1]).T array([[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 6 x = 3x3 int8 矩阵 0 1 2 3 4 5 6 7 8
完整代码import matlab.engine import numpy as np eng=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()
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com