当前位置: 首页 > article >正文

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()

输入参数

  • options:可参照https://ww2.mathworks.cn/help/matlab/matlab_env/commonly-used-startup-options.html
  • background:同步或异步启动 MATLAB。如果 background 为 True,会异步启动 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()

http://www.kler.cn/a/229537.html

相关文章:

  • 支持534种语言,开源大语言模型MaLA-500
  • 「云原生可观测团队」获选「InfoQ 年度技术内容贡献奖」
  • 实体类和Map类型相互转换
  • 5.0 ZooKeeper 数据模型 znode 结构详解
  • 二级C语言笔试1
  • 时间序列(Time-Series)SelfAttention_Family.py代码解析
  • k8s学习-Service Account和RBAC授权
  • C++学习Day04之常函数和常对象
  • 02.02_111期_C++_数据内存分布笔记
  • Java接口与抽象类
  • 好“云”来!盘点春节与云计算息息相关的那些事儿
  • JVM 性能调优 - 四种引用(4)
  • 【动态规划】【图论】【C++算法】1928规定时间内到达终点的最小花费
  • 如何在Linux中安装新版的Python软件
  • Linux死机排查方法——内存日志
  • synchronized内部工作原理
  • OpenFeign之@Headers注解
  • PYthon进阶--网页采集器(基于百度搜索的Python3爬虫程序)
  • 【防止重复提交】Redis + AOP + 注解的方式实现分布式锁
  • Nim游戏