matlab读取python程序(如何使用Python调用MATLAB函数)

matlab读取python程序(如何使用Python调用MATLAB函数)(1)

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

    分享
    投诉
    首页