Ubuntu下实现python调用MATLAB API

1.安装用于 Python 的 MATLAB 引擎 API
https://ww2.mathworks.cn/help/matlab/matlab_external/install-the-matlab-engine-for-python.html?ue
(1)启动 MATLAB,并在命令行窗口中键入 matlabroot。复制 matlabroot 所返回的路径。
(2)cd “matlabroot/extern/engines/python”
python setup.py install
报错:
OSError: MATLAB Engine for Python supports Python version 2.7, 3.3, 3.4 and 3.5, but your version of Python is 3.6
解决:
创建python3.5环境:
(1)安装python3.5:
sudo apt-get install python3.5(如已安装则忽略)
注意,在ubuntu18.04下sudo apt-get install python3.5可能安装失败,于是:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt-get install python3.5-dev
(2)创建虚拟环境:
virtualenv --python=python3.5 ~/envs/tf35
(3)启动虚拟环境:
source ~/envs/tf35/bin/activate
(注意python3.5可能再次遇到和3.6相同的matplotlib缺少前端tkinter的错误,安装时注意选择版本sudo apt install python3.5-tk)
再次:sudo python3.5 setup.py install(错误,相关配置会安装在系统目录的python3.5里,而不是我们将要用的虚拟环境里的python3.5)
   sudo ~/envs/tf35/bin/python3.5 setup.py install(正确)
2.使用:
(1)调用单返回值函数:
  import matlab.engine
  eng = matlab.engine.start_matlab()
  tf = eng.isprime(37)
  print(tf)

True
(1)调用多返回值函数:
import matlab.engine
  eng = matlab.engine.start_matlab()
  t = eng.gcd(100.0,80.0,nargout=3)
  print(t)

(20.0, 1.0, -1.0)

注意:
1.注意python中的矩阵作为参数,传入MATLAB函数,需要对数据进行转化。将数据转化成list形式,a=a.tolist()
2.python调用matlab出错:Error using sparse Index into matrix must be positive.
由于python索引从0开始,而matlab从1开始,所以涉及到用索引的,需要转化

你可能感兴趣的:(Ubuntu下实现python调用MATLAB API)