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

启动引擎

python 复制代码
import matlab.engine
eng = matlab.engine.start_matlab()

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

python 复制代码
import matlab.engine
future = matlab.engine.start_matlab(background=True)

启动多个引擎

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

python 复制代码
import matlab.engine
eng1 = matlab.engine.start_matlab()
eng2 = matlab.engine.start_matlab()

输入参数

调用 MATLAB函数

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

python 复制代码
import matlab.engine
eng = matlab.engine.start_matlab()
eng.cd(r'myFolder', nargout=0)
eng.myFnc()

调用 MATLAB脚本

python 复制代码
import matlab.engine
eng = matlab.engine.start_matlab()
eng.triarea(nargout=0)

从 MATLAB 函数返回输出参数

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

python 复制代码
import matlab.engine
eng = matlab.engine.start_matlab()
tf = eng.isprime(37)
print(tf)

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

默认情况下该引擎会返回单个输出参数。若返回多个参数,使用 nargout 参数指定输出参数的数量。

确定两个数的最大公分母,请使用 gcd 函数。设置 nargout 以从 gcd 返回三个输出参数。

python 复制代码
import matlab.engine
eng = matlab.engine.start_matlab()
t = eng.gcd(100.0,80.0,nargout=3)
print(t)

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

python 复制代码
import matlab.engine
eng = matlab.engine.start_matlab()
eng.doc(nargout=0)

在 Python 中使用 MATLAB 数组

Python list 创建一个 MATLAB 数组

python 复制代码
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

停止引擎

python 复制代码
eng.quit()
相关推荐
niucloud-admin28 分钟前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
小叶肥辉32 分钟前
LangChain链和LangGraph图的学习笔记【三】——分别用langchain_openai库和langchain_community库调用大模型
笔记·python·langchain
2401_873479401 小时前
IP属地为什么有时显示外省?用IP查询工具核查动态分配、运营商出口与GeoIP库
python·tcp/ip·ip
OKkankan3 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
山哥ol4 小时前
【Geany 环境配置与中文乱码解决参考】
python
会飞锦鲤4 小时前
基于 Mask R-CNN 的药片缺陷检测系统
人工智能·pytorch·python·神经网络·resnet-50
默 语4 小时前
Java新手入门:从零开始安装JDK并配置环境变量
java·开发语言·python·mysql·group by·1024程序员节·数据去重
清水白石0085 小时前
Python 异步编程深度解析:Cancellation 到底是异常还是控制信号?从 asyncio 取消机制到企业级事务设计最佳实践
开发语言·python
Patrick在香港5 小时前
Python 审计香港开放数据目录:两个端点差 10 倍,只有 9.3% 的资源标了「最后修改时间」
开发语言·数据库·python·数据分析·api·数据治理·开放数据
IT毕设梦工厂5 小时前
计算机毕业设计选题推荐:基于大数据的草鱼价格分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·数据挖掘·数据分析·课程设计·大数据毕设项目