python调用matlab程序

本文主要介绍如何通过python调用matlab的.m文件,以及在调用中遇到的一些问题。

参考网址:
两步解决python调用Matlab的脚本和函数文件
如何在CMD下运用管理员权限
在CMD命令行中切换到管理员权限模式

步骤

安装python的matlab engine包

此处和官网完全一致

获取matlab文件夹路径

打开matlab,在命令行输入matlabroot,然后用返回值替代下面命令中的matlabroot

安装

对于windows用户:

1
2
cd "matlabroot\extern\engines\python"
python setup.py install

mac或者linux:

1
2
cd "matlabroot/extern/engines/python"
python setup.py install

调用.m文件

假设当前目录下存在xxx.m文件

打开matlab

1
2
import matlab.engine
eng = matlab.engine.start_matlab()

执行

1
eng.xxx(nargout=0)


1
eng.xxx(para1,para2...)

第一个是当做脚本执行,第二个是当做函数执行,括号里面为参数。按照需要执行文件的类型进行选择。

路径问题

如果python文件与matlab文件在同一个目录下,不需要考虑目录问题。

如果python文件与matlab文件不在一个目录下,则需要用os模块修改目录。

具体步骤

导入包

1
2
import os
import matlab.engine

修改当前目录到.m文件目录:

1
os.chdir('xxxxxxx')

启动matlab.engine,执行文件,和先前相同。

总结起来,必须要在.m文件目录启动matlab.engine。如果一开始在正确目录启动,后续使用os.chdir修改到其他目录仍然可以执行。如果一开始不在正确目录启动,即使后面使用os.chdir修改到正确目录也不行。

遇到的问题

安装matlab.engine时python没有管理员权限

这个问题是由于管理员限制matlab文件夹的权限造成的。问题会不会出现取决于当前是否为管理员用户。如果是,则不存在这个问题,如果不是,需要给定管理员权限。

最简单的方法,开始菜单中搜索cmd,右键选择管理员运行,然后cd到目标目录下,再用python安装即可。