python调用matlab函数(内置 + 自定义) —— 安装matlab.engine
文章目录
- 一、简介
- 二、安装matlab.engine
- 2.1、基于 CMD 安装
- 2.2、基于 MATLAB 安装(不建议)
- 三、python调用matlab函数(内置 + 自定义)
一、简介
matlab.engine(MATLAB Engine API for Python):是 MATLAB 提供的一个 Python 接口,允许你在 Python 环境中与 MATLAB 进行交互。通过 matlab.engine,你可以在 Python 中启动 MATLAB 引擎,调用 MATLAB 函数,传递数据,以及执行 MATLAB 脚本和命令。
主要功能:
- 启动 MATLAB 引擎:在 Python 中, 使用
matlab.engine.start_matlab()启动 MATLAB 引擎,并通过该引擎执行命令。- 调用 MATLAB 函数:在 Python 中,直接调用 MATLAB 的内置函数或自定义函数(.m),例如:
result = eng.sqrt(16.0)- 数据传递:支持在 Python 和 MATLAB 之间传递数据,包括数组、矩阵、字符串等。例如:
y = eng.my_function(x=[1.0, 2.0, 3.0])- 执行 MATLAB 脚本或命令: 可以通过
eng.eval("disp('Hello from MATLAB!')", nargout=0)来执行 MATLAB 脚本或命令。- 关闭 MATLAB 引擎:: 执行完任务后,使用
eng.quit()关闭 MATLAB 引擎。
优势:
- MATLAB 与 Python 的结合:可以将 Python 的优势与 MATLAB 强大的数学计算、符号计算、数据分析等功能相结合,进行更复杂的分析。
- 科学计算和模拟:在 MATLAB 中进行数值计算和建模,再将结果传递到 Python 中进行可视化和进一步分析。
- 方便的调试和交互:可以在 Python 环境中实时调试 MATLAB 代码,快速验证和测试。
- 多平台支持:matlab.engine 支持多种操作系统,包括 Windows、Linux 和 macOS。
二、安装matlab.engine
2.1、基于 CMD 安装

- (1)打开 CMD 命令提示符,并指定 Python 环境,用于与 MATLAB 引擎绑定:若需要激活环境,则执行以下代码:
conda activate py39,其中 py39 为指定的虚拟环境名称。- (2)切换到 MATLAB 安装路径下的 extern\engines\python 目录:
cd D:\MATLAB2023b\MATLAB\R2023b\extern\engines\python- (3)在当前目录下创建安装目录(可选):
mkdir dist
- 通常 setup.py 会自动创建 dist 目录,若没有,则需要手动创建以避免错误。
- 备注:可以在查看 MATLAB 安装目录时,确认是否存在 dist 目录而决定。
- (4)开始安装
- 最经典方法(已弃用,但仍可使用):
python setup.py install。系统将警告提示:SetuptoolsDeprecationWarning: setup.py install is deprecated.- 使用 pip 安装(最新方法):
python -m pip install .。该命令将从当前目录安装,而 setup.py 文件通常会在同一目录下。- 如果遇到权限问题,使用 --user 参数安装到用户本地目录,而不是全局安装:
python setup.py install --user
2.2、基于 MATLAB 安装(不建议)
打开 MATLAB 命令窗口,输入以下命令来安装:
cd (fullfile(matlabroot,'extern','engines','python'))
system('python setup.py install')
- 报错提示:若返回
9009,表明命令未成功运行。- 原因分析:由于命令行找不到 python 或者路径配置有问题。—— 当 system 调用 python 命令时,MATLAB 依赖系统环境变量 PATH 来定位 Python。如果 Python 没有被正确添加到环境变量中,会导致找不到 python 命令,从而报错。
- 解决方法:将 setup.py 替换为 MATLAB 安装目录
三、python调用matlab函数(内置 + 自定义)
一文读懂如何用python调用matlab函数(windows环境)
启动和关闭 MATLAB 引擎是一个较为耗时的操作,若需要频繁调用MATLAB函数,可以将启动 MATLAB 引擎提取到外部函数中,以实现只启动一次。
import matlab.engineeng = matlab.engine.start_matlab() # 启动 MATLAB 引擎
#########################################################################################
print("调用 MATLAB 版本号: ", eng.version()) # 获取 MATLAB 版本号
print("调用 MATLAB 内置函数: ", eng.sqrt(4.0))
print("调用 MATLAB 脚本文件(.m): ", eng.count(1.0, 2.0))
#########################################################################################
eng.quit() # 关闭 MATLAB 引擎"""3调用 MATLAB 版本号: 23.2.0.2365128 (R2023b)
调用 MATLAB 内置函数: 2.0
调用 MATLAB 脚本文件(.m): 3.0
"""
- 若调用脚本文件(自定义函数),则(.m)与(.py)必须在同一个文件夹下。
- 有趣的现象,MATLAB打印结果也会在 Python 中显示。
- 若在非绑定的 Python 环境下运行,则异常提示:
ModuleNotFoundError: No module named 'matlab'
function a = count(c, d)% 输入参数: c 和 d% 输出参数: aa = c + d; % 函数执行功能disp(a); % 显示输出结果
end
相关文章:
python调用matlab函数(内置 + 自定义) —— 安装matlab.engine
文章目录 一、简介二、安装matlab.engine2.1、基于 CMD 安装2.2、基于 MATLAB 安装(不建议) 三、python调用matlab函数(内置 自定义) 一、简介 matlab.engine(MATLAB Engine API for Python):…...
CAD c# 生成略缩图预览
代码如下: using (Transaction tr currentdb.TransactionManager.StartTransaction()){//当前数据库开启事务using (Database tempdb new Database(false, true)) //创建临时数据库(两个参数:是否创建符号表,不与当前文档关联){try{Bitmap …...
端点鉴别、安全电子邮件、TLS
文章目录 端点鉴别鉴别协议ap 1.0——发送者直接发送一个报文表明身份鉴别协议ap 2.0——ap1.0 的基础上,接收者对报文的来源IP地址进行鉴别鉴别协议ap 3.0——使用秘密口令,口令为鉴别者和被鉴别者之间共享的秘密鉴别协议ap 3.1——对秘密口令进行加密&…...
汽车电子元件的可靠性保障:AEC-Q102认证
AEC-Q102标准的起源与价值 随着汽车电子系统的日益复杂,电子器件必须能够在极端的温度、湿度、振动和电磁干扰等恶劣条件下保持性能。AEC-Q102标准由汽车电子委员会(AEC)制定,专门针对LED、激光二极管和光电二极管等光电器件&…...
主成分分析法大全(包括stata+matlab)
数据简介:主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。在实际课题中,为了…...
ubuntu+ros新手笔记(五):初探anaconda+cuda+pytorch
深度学习三件套:初探anacondacudapytorch 系统ubuntu22.04 1.初探anaconda 1.1 安装 安装过程参照【详细】Ubuntu 下安装 Anaconda 1.2 创建和删除环境 创建新环境 conda create -n your_env_name pythonx.x比如我创建了一个名为“py312“的环境 conda cre…...
C++ List(双向链表)
是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个 信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。它无需分配指定 的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中&#…...
ASP.NET|日常开发中读写TXT文本详解
ASP.NET|日常开发中读写TXT文本详解 前言一、读取 TXT 文本1.1 使用StreamReader类 二、写入 TXT 文本2.1 使用StreamWriter类 三、文件编码问题3.1 常见编码格式 四、错误处理和性能考虑4.1 错误处理4.2 性能考虑 结束语优质源码分享 ASP.NET|日常开发中…...
【机器学习】在不确定的光影中:机器学习与概率论的心灵共舞
文章目录 概率与统计基础:解锁机器学习的数据洞察之门前言一、概率论基础1.1 概率的基本概念与性质1.1.1 概率的定义1.1.2 样本空间与事件1.1.3 互斥事件与独立事件1.1.4 概率的计算方法 1.2 条件概率与独立性1.2.1 条件概率1.2.2 独立事件 1.3 随机变量1.3.1 随机变…...
【论文笔记】Editing Models with Task Arithmetic
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Editing Models with Task…...
ESP32外设学习部分--UART篇
前言 在我们学习嵌入式的过程中,uart算是我们用的非常多的一个外设了,我们可以用串口打印信息,也可以用于设备通信,总之串口的作用非常多,我们也非常有必要熟练地去掌握这个外设。 uart的配置 uart的参数配置 uart_…...
ssm-day04 mybatis
mybatis是一个持久层框架,针对的是JDBC的优化 简化数据库操作,能进行单表、多表操作,在这个框架下,需要我们自己写SQL语句 Mapper接口和MapperXML文件就相当于Dao和Dao层的实现 通常将xml文件放在resources包下 ,放在…...
es中段是怎么合并的
文章目录 1. 段合并的背景2. 合并的方式2.1TieredMergePolicy 的层次结构2.2 层次的基本规则2.3 如何理解层次(tier)2.4. 合并过程中的层次示例2.5. TieredMergePolicy 的优势2.6. 小结 3. 合并过程中的优化4. 合并的性能考虑5. 使用 API 手动合并6. 合并…...
5、可暂停的线程控制模型
一、需求 在做播放器的时候,很多的模块会创建一个线程,然后在这个线程上跑单独的功能,同时,需要对这个线程进行控制,比如暂停,继续等,如播放器的解码,解封装等,都需要对…...
sql优化--mysql隐式转换
sql隐式转换 在SQL中,隐式转换是数据库自动进行的类型转换,隐式转换可以帮助我们处理不同类型的数据。 比如,数据表的字段是字符串类型的,传入一个整型的数据,也能够运行sql。 sql隐式转换的弊端 sql隐式转换&…...
Scratch021(画笔)
画笔模块 可以这么理解,画笔模块是Scratch的拓展模块,用它可以完成很多的功能,非常有趣! 案例要求 点击绿旗运行程序,页面显示需要绘制的背景。 可以使用鼠标移动画笔角色,按照顺序点击连线,…...
Leetcode 3387. Maximize Amount After Two Days of Conversions
Leetcode 3387. Maximize Amount After Two Days of Conversions 1. 解题思路2. 代码实现 题目链接:3387. Maximize Amount After Two Days of Conversions 1. 解题思路 这一题思路上其实就是要分别求出day 1以及day 2中原始货币与其他各个货币之间的成交价&…...
机器视觉与OpenCV--01篇
计算机眼中的图像 像素 像素是图像的基本单位,每个像素存储着图像的颜色、亮度或者其他特征,一张图片就是由若干个像素组成的。 RGB 在计算机中,RGB三种颜色被称为RGB三通道,且每个通道的取值都是0到255之间。 计算机中图像的…...
简单的Java小项目
学生选课系统 在控制台输入输出信息: 在eclipse上面的超级简单文件结构: Main.java package experiment_4;import java.util.*; import java.io.*;public class Main {public static List<Course> courseList new ArrayList<>();publi…...
使用layui的table提示Could not parse as expression(踩坑记录)
踩坑记录 报错图如下 原因: 原来代码是下图这样 上下俩中括号都是连在一起的,可能导致解析问题 改成如下图这样 重新启动项目,运行正常!...
c语言基础实战:通过快马ai生成银行账户管理系统练手项目
今天想和大家分享一个用C语言实现的银行账户管理系统小项目。这个项目非常适合用来巩固C语言的基础知识,特别是结构体、指针和文件操作这些核心概念。我自己在学习过程中发现,通过实际项目练习,能更好地理解这些抽象的概念。 项目需求分析 …...
【Python原生AOT编译落地白皮书】:2026生产环境已验证的5大避坑清单与性能跃迁实测数据
第一章:Python原生AOT编译落地的生产意义与演进全景 Python长期以来以解释执行和动态特性见长,但其运行时开销、启动延迟与内存 footprint 在云原生微服务、边缘设备及严苛SLA场景中日益成为瓶颈。原生AOT(Ahead-of-Time)编译正从…...
大数据领域数据预处理:优化数据分析结果的关键环节
大数据领域数据预处理:优化数据分析结果的关键环节 关键词:大数据、数据预处理、数据分析、优化、关键环节 摘要:本文深入探讨了大数据领域中数据预处理这一优化数据分析结果的关键环节。详细介绍了数据预处理的背景知识,包括目的、范围、预期读者等。通过生动形象的比喻解…...
m4s-converter:让B站缓存重获新生的轻量级格式转换工具
m4s-converter:让B站缓存重获新生的轻量级格式转换工具 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 当你辛苦缓存的B站视频因下架…...
番茄小说下载器:如何轻松搭建你的个人离线图书馆?
番茄小说下载器:如何轻松搭建你的个人离线图书馆? 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 还在为网络不稳定无法畅读小说而烦恼吗?番…...
DanKoe 视频笔记:人生规划:20-30 岁是教程阶段,切勿虚度 [特殊字符]
在本节课中,我们将要学习如何正确看待并规划你的20-30岁。这个阶段并非人生的“主游戏”,而是关键的“教程”阶段。我们将探讨常见的陷阱和有效的策略,帮助你为未来打下坚实基础,避免陷入平庸的循环。 这封信的内容可能会让一些人…...
实战指南:如何快速解决WebApi在IIS部署中的HTTP 500.19配置错误
1. 遇到HTTP 500.19错误时先别慌 第一次把WebApi部署到IIS服务器就遇到HTTP 500.19错误,相信很多开发者都会心头一紧。这个错误通常伴随着"配置数据无效"的提示,看起来挺吓人,但实际上解决起来并不复杂。我刚开始接触IIS部署时也踩…...
港科喜讯|[港科百创]参赛项目上市!视觉语言大模型第一股诞生!
2026年3 月 30 日,山东极视角科技股份有限公司(股票代码:6636.HK)在香港联合交易所主板正式上市。这家曾斩获香港科技大学第六届百万奖金国际创业大赛深圳赛区一等奖的科创企业,同时也是香港科大"创科行"(第…...
Stats与其他Go统计库对比分析:为什么选择这个无依赖解决方案
Stats与其他Go统计库对比分析:为什么选择这个无依赖解决方案 【免费下载链接】stats A well tested and comprehensive Golang statistics library package with no dependencies. 项目地址: https://gitcode.com/gh_mirrors/sta/stats 在Go语言生态系统中&a…...
【硬核】K8s GPU调度从入门到“精通”:不止Device Plugin,还有MIG、DRA和那些你踩过的坑
K8s GPU调度从入门到“精通”:不止Device Plugin,还有MIG、DRA和那些你踩过的坑你以为把GPU挂上K8s就万事大吉了?错!调度策略、硬隔离、软隔离、抢占回收…每一个环节都可能是你烧钱的坑。本文从实战出发,手把手教你如…...
