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

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
http://www.lryc.cn/news/504660.html

相关文章:

  • CAD c# 生成略缩图预览
  • 端点鉴别、安全电子邮件、TLS
  • 汽车电子元件的可靠性保障:AEC-Q102认证
  • 主成分分析法大全(包括stata+matlab)
  • ubuntu+ros新手笔记(五):初探anaconda+cuda+pytorch
  • C++ List(双向链表)
  • ASP.NET|日常开发中读写TXT文本详解
  • 【机器学习】在不确定的光影中:机器学习与概率论的心灵共舞
  • 【论文笔记】Editing Models with Task Arithmetic
  • ESP32外设学习部分--UART篇
  • ssm-day04 mybatis
  • es中段是怎么合并的
  • 5、可暂停的线程控制模型
  • sql优化--mysql隐式转换
  • Scratch021(画笔)
  • Leetcode 3387. Maximize Amount After Two Days of Conversions
  • 机器视觉与OpenCV--01篇
  • 简单的Java小项目
  • 使用layui的table提示Could not parse as expression(踩坑记录)
  • 区块链共识机制详解
  • 【Excel】单元格分列
  • 【含开题报告+文档+PPT+源码】基于微信小程序的旅游论坛系统的设计与实现
  • 微软 Phi-4:小型模型的推理能力大突破
  • 操作系统课后习题2.2节
  • [小白系列]安装sentence-transformers
  • Python字符串format方法全面解析
  • 【Reading Notes】Favorite Articles from 2024
  • Python爬虫之Scrapy框架基础入门
  • spring cloud contract mq测试
  • Axure原型设计技巧与经验分享