[Python+MATLAB] 在Python中使用MATLAB (持续更新中)

文章目录

      • 在Python中安装MATLAB引擎
        • 官方介绍
        • 个人介绍
      • 结果演示
      • 常见用法
      • 一些tips:

使用Python能使用MATLAB的函数吗?

答案是可以的!

The MATLAB Engine API for Python provides a package for Python to call MATLAB as a computational engine. (官方网址:Calling MATLAB from Python)

这真是一个人民群众喜闻乐见的好事情!

至于为啥要在Python里调用MATLAB。这可真是我的血泪史了。

Python的3D图的绘制还是逊于MATLAB,最常用的matplotlib没有3D引擎!如果要画3D图(比如绘制三维方向图quiver3D),很多时候都要用到 mayavi ,而且这个函数库还有非常严格的版本的依赖项的要求。有一点没哄好,直接就罢工了。

另外,MATLAB在工程计算和工程仿真上,比Python强的不是一星半点。

在Python中安装MATLAB引擎

官方介绍

  • To install and start the engine, see Get Started with MATLAB Engine API for Python.
  • To call Python functions from MATLAB, see Python Libraries.

个人介绍

首先要知道两个路径:

  • Python的interpreter的位置。

    我用的Anaconda的Python.exe,所以对应的库要安装在该路径下。

  • MATLAB的安装路径。

    要在这里找到setup.py。

首先在MATLAB安装路径下找到setup.py,我的路径是E:\MATLAB R2019b\extern\engines\python

[Python+MATLAB] 在Python中使用MATLAB (持续更新中)_第1张图片

打开Anaconda Prompt(使用Anaconda Prompt是直接安装到Anaconda的环境下),切换路径到该文件夹,执行python setup.py install

(使用pip要麻烦一点,不推荐)

[Python+MATLAB] 在Python中使用MATLAB (持续更新中)_第2张图片

结果演示

然后随便找个代码跑一下(选自https://blog.csdn.net/wkk15903468980/article/details/79196382 )

import matlab
import matlab.engine
import os
import time
import numpy as np

eng=matlab.engine.start_matlab()
mat=eng.fspecial('gaussian',matlab.double([100,100]),3.0)
eng.mesh(mat)

#show from numpy
mat=np.ones([100,100])
mat2=mat.tolist()
mat3=matlab.double(initializer=mat2)
eng.mesh(mat3)
os.system('pause')

结果如图:

[Python+MATLAB] 在Python中使用MATLAB (持续更新中)_第3张图片

常见用法

python调用matlab API 汇总

后续有必要的话,会单独整理出常见用法的小Demo。

一些tips:

  1. (待验证)在使用figure()函数时发现一个小区别,在matlab中写为figure(1); 在python中必须写为eng.figure(1.0),否则会报错:matlab.engine.MatlabExecutionError: First argument must be a figure object or a positive Integer. 按照这句话应该是说第一个参数必须是figure object或者正的integer,然而实际是得用1.0这个double型才能跑。https://blog.csdn.net/wkk15903468980/article/details/79196382
  2. ……

你可能感兴趣的:(MATLAB,Python)