本文主要介绍如何通过python调用matlab的.m文件,以及在调用中遇到的一些问题。
安装python的matlab engine包
此处和官网完全一致
获取matlab文件夹路径
打开matlab,在命令行输入matlabroot,然后用返回值替代下面命令中的matlabroot
安装
对于windows用户:1
2cd "matlabrootexternenginespython"
python setup.py install
mac或者linux:1
2cd "matlabroot/extern/engines/python"
python setup.py install
调用.m文件
假设当前目录下存在xxx.m文件
打开matlab1
2import matlab.engine
eng = matlab.engine.start_matlab()
执行1eng.xxx(nargout=0)
或1eng.xxx(para1,para2...)
第一个是当做脚本执行,第二个是当做函数执行,括号里面为参数。按照需要执行文件的类型进行选择。
路径问题
如果python文件与matlab文件在同一个目录下,不需要考虑目录问题。
如果python文件与matlab文件不在一个目录下,则需要用os模块修改目录。
具体步骤
导入包1
2import os
import matlab.engine
修改当前目录到.m文件目录:1os.chdir('xxxxxxx')
启动matlab.engine,执行文件,和先前相同。
总结起来,必须要在.m文件目录启动matlab.engine。如果一开始在正确目录启动,后续使用os.chdir修改到其他目录仍然可以执行。如果一开始不在正确目录启动,即使后面使用os.chdir修改到正确目录也不行。
遇到的问题
安装matlab.engine时python没有管理员权限
这个问题是由于管理员限制matlab文件夹的权限造成的。问题会不会出现取决于当前是否为管理员用户。如果是,则不存在这个问题,如果不是,需要给定管理员权限。
最简单的方法,开始菜单中搜索cmd,右键选择管理员运行,然后cd到目标目录下,再用python安装即可。