Python调用matlab程序

matlab官网:https://ww2.mathworks.cn/?s_tid=gn_logo
matlab外部语言和库接口,包括 Python、Java、C、C++、.NET 和 Web 服务。
在这里插入图片描述

matlab和python的版本

在这里插入图片描述

安装依赖配置

安装matlab的engine
找到matlab的安装目录:“xxx\ extern\engines\python”,在命名窗口cd到该目录,运行“python setup.py install”命令,运行完成后将生成如下文件夹:
在这里插入图片描述

python调用matlab

启动引擎

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

通过调用 start_matlab 启动新的 MATLAB® 进程。start_matlab 函数返回 Python 对象 eng,它是用于与 MATLAB 进程通信的 MatlabEngine 对象。
异步启动引擎:

import matlab.engine
future = matlab.engine.start_matlab(background=True)

启动多个引擎
从每个引擎启动一个不同的 MATLAB 进程。

import matlab.engine
eng1 = matlab.engine.start_matlab()
eng2 = matlab.engine.start_matlab()

输入参数

调用 MATLAB函数

调用文件夹 myFolder 中的 MATLAB 函数 myFnc

import matlab.engine
eng = matlab.engine.start_matlab()
eng.cd(r'myFolder', nargout=0)
eng.myFnc()

调用 MATLAB脚本

import matlab.engine
eng = matlab.engine.start_matlab()
eng.triarea(nargout=0)

从 MATLAB 函数返回输出参数

确定某个数是否为质数,调用 isprime 函数。

import matlab.engine
eng = matlab.engine.start_matlab()
tf = eng.isprime(37)
print(tf)

从 MATLAB 函数返回多个输出参数

默认情况下该引擎会返回单个输出参数。若返回多个参数,使用 nargout 参数指定输出参数的数量。
确定两个数的最大公分母,请使用 gcd 函数。设置 nargout 以从 gcd 返回三个输出参数。

import matlab.engine
eng = matlab.engine.start_matlab()
t = eng.gcd(100.0,80.0,nargout=3)
print(t)

如果函数不返回任何参数,则将 nargout 设为 0。

import matlab.engine
eng = matlab.engine.start_matlab()
eng.doc(nargout=0)

在 Python 中使用 MATLAB 数组

Python list 创建一个 MATLAB 数组

import matlab.engine
eng = matlab.engine.start_matlab()
a = matlab.double([1,4,9,16,25])
b = eng.sqrt(a)
print(b)

MATLAB 数组和Python 变量的关系如下:
https://ww2.mathworks.cn/help/matlab/matlab_external/matlab-arrays-as-python-variables.html
MATLAB 标量类型到 Python 类型的映射:
https://ww2.mathworks.cn/help/matlab/matlab_external/handle-data-returned-from-matlab-to-python.html

停止引擎

eng.quit()

相关推荐

  1. Julia调用Matlab, Python以及R的微分方程求解器

    2024-02-08 07:40:02       40 阅读
  2. 跨语言编程:在C#应用程序调用Python

    2024-02-08 07:40:02       26 阅读
  3. Python进阶(二)】——程序调试方法

    2024-02-08 07:40:02       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-08 07:40:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-08 07:40:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-08 07:40:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-08 07:40:02       20 阅读

热门阅读

  1. 隐私计算技术创新赋能金融数字化转型

    2024-02-08 07:40:02       39 阅读
  2. C++之多线程(multi-thread)

    2024-02-08 07:40:02       42 阅读
  3. PostgreSQL不停机迁移数据

    2024-02-08 07:40:02       26 阅读
  4. sklearn.preprocessing 特征编码汇总

    2024-02-08 07:40:02       31 阅读
  5. Rust语言入门小结(第1篇)

    2024-02-08 07:40:02       30 阅读
  6. 设计模式(行为型模式)中介者模式

    2024-02-08 07:40:02       32 阅读
  7. LeetCode动态规划的解题思路

    2024-02-08 07:40:02       30 阅读
  8. HTML系列 -> <meta charset=“utf-8“>

    2024-02-08 07:40:02       33 阅读
  9. Spark的timestamp 数据时间问题

    2024-02-08 07:40:02       41 阅读
  10. ORACLE的 软 软 软 解析!

    2024-02-08 07:40:02       37 阅读
  11. 【大数据面试题】005 谈一谈 Flink Watermark 水印

    2024-02-08 07:40:02       34 阅读
  12. FolkMQ “单线程“消息中间件(开源) v1.0.32 发布

    2024-02-08 07:40:02       39 阅读