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.mzph.cn/web/62633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytroch环境安装-pycharm

环境介绍 安装pycharm 官网下载即可,我这里已经安装,就不演示了 安装anaconda 【官网链接】点击下载 注意这一步选择just me 这一步全部勾上 打开 anaconda Prompt 输入conda create -n pytorch python3.8 命令解释:创建一个叫pytorch&…

Photoshop提示错误弹窗dll缺失是什么原因?要怎么解决?

Photoshop提示错误弹窗“DLL缺失”:原因分析与解决方案 在创意设计与图像处理领域,Photoshop无疑是众多专业人士和爱好者的首选工具。然而,在使用Photoshop的过程中,有时会遇到一些令人头疼的问题,比如突然弹出的错误…

上海亚商投顾:创业板指震荡调整 机器人概念股再度爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日冲高回落,深成指、创业板指盘中跌超1%,尾盘跌幅有所收窄。机器人概念股逆势爆…

(Linux)CentOS7离线安装MinIO(超详细)

目录 前言1. 下载2. 安装VMware3. 安装CentOS4. 离线安装MinIO4.1. ssh工具连接CentOS4.2. 上传MinIO离线包4.2.1 创建data目录4.2.2 上传RPM包到data目录4.2.3 安装RPM包4.2.4 创建MinIO数据目录4.2.5 配置 MinIO 服务4.2.6 启动 MinIO4.2.7 开放端口 4.2.8 访问MinIO 创作不易…

HarmonyOS-高级(四)

文章目录 应用开发安全应用DFX能力介绍HiLog使用指导HiAppEvent 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年12月11日11点18分 应用开发安全 应用隐私保护 隐私声明弹窗的作…

论文阅读:Statistical Comparisons of Classifiers over Multiple Data Sets

论文地址:Statistical Comparisons of Classifiers over Multiple Data Sets (acm.org) 前面在机器学习之Friedman检验-CSDN博客 中提到了Friedman检验,这里将对这个方法的论文进行详细的阅读,以了解其原理。 摘要 尽管用于在单个数据集上比…

练9:进制转换

欢迎大家订阅【蓝桥杯Python每日一练】 专栏,开启你的 Python数据结构与算法 学习之旅! 文章目录 1 进制转换2 例题分析 1 进制转换 ①任意制转为十进制 【示例】 ②十进制转为任意制 【法一】 【法二】 2 例题分析 题目地址:https:/…

C语言:指针详解续

一、字符指针变量 我们知道有种指针类型为字符指针(char*)。 #include <stdio.h> int main() {char ch w;char* pch &ch;printf("%c\n", *pch);return 0; } 其实它还有一种使用方式。 #include <stdio.h> int main() {char* pstr "hello…

HarmonyOS-高级(一)

文章目录 一次开发、多端部署自由流转 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;HarmonyOS专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月09日12点19分 一次开发、多端部署 布局能力 自适应布局 拉伸能力均分能力占比能力缩放…

【嵌入式系统】第4章 嵌入式最小系统,供电电路,时钟电路,复位电路,程序下载电路

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

期权懂|交易个股期权需要注意哪些风险?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 交易个股期权需要注意哪些风险&#xff1f; 一、交易个股期权需要注意合约到期风险&#xff1a; 需关注到期日&#xff0c;及时平仓或行权&#xff0c;避免合约作废。二、交易个…

MVC配置文件配置及位置

配置文件位置 默认位置 WEB-INF目录下&#xff1a;-servlet.xml 指定位置 在web.xml中配置 DispatcherServlet中的contextConfigLocation属性可以指定配置文件位置 确保配置文件存在于类路径&#xff08;Resources&#xff09;下 web.xml <?xml version"1.0" …

可视化逻辑表达式编辑器

优质博文&#xff1a;IT-BLOG-CN 一、QueryBuilder介绍 QueryBuilder 是一个用于创建查询和过滤器的 UI 组件。 QueryBuilder的特点 1、支持的输入属性丰富&#xff0c;常见的 字符串&#xff0c;整数&#xff0c;浮点数&#xff0c;布尔类型&#xff0c;日期类型&#xff0…

Linux下mysql环境的搭建

1.mysql的下载 去MySQL官网下载mysql的linux压缩包 MySQL :: Download MySQL Community Server 如果下载慢请到网盘中自行下载 通过网盘分享的文件&#xff1a;mysql-8.0.40-1.el7.x86_64.rpm-bundle.tar 链接: https://pan.baidu.com/s/1vUJ-VuTwer1nLPT-haQCqw?pwd6342 提…

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 多图推理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 多图推理 flyfish 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推理 基于Q…

图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。

图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序&#xff0c;GUI界面。附详细的运行说明。 目录 图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序&#xff0c;GUI界面。附详细的运行说明。预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基…

设置IMX6ULL开发板的网卡IP的两种方法(临时生效和永久有效两种方法)

设置开发板网卡的IP&#xff0c;有两种方法。 方法一&#xff1a;临时生效 第一种方式是临时设置&#xff0c;只有本次有效&#xff0c;重启后又要重新设&#xff0c;命令为&#xff1a; ifconfig eth0 192.168.5.9设置成功后可以使用ifconfig命令来查看已设置的 IP 地址。 …

22. Three.js案例-创建旋转的圆环面

22. Three.js案例-创建旋转的圆环面 实现效果 知识点 WebGLRenderer (WebGL渲染器) THREE.WebGLRenderer 是Three.js中最常用的渲染器&#xff0c;用于将场景渲染到WebGL画布上。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&…

【D3.js in Action 3 精译_044】5.1 饼图和环形图的创建(四):数据标签的添加

当前内容所在位置&#xff1a; 第五章 饼图布局与堆叠布局 ✔️ 5.1 饼图和环形图的创建 ✔️ 5.1.1 准备阶段&#xff08;一&#xff09;5.1.2 饼图布局生成器&#xff08;二&#xff09;5.1.3 圆弧的绘制&#xff08;三&#xff09; ✔️5.1.4 数据标签的添加&#xff08;四&…

java全栈day13-后端Web实战2

接上述查询部门实现&#xff0c;完成后续要求 一、统一响应结果 1.1步骤 资料如下 对一开始的代码修改如下 结果如下 1.2测试 指定请求方式 结果 小结 二、前后端联调测试 资料如下&#xff1a; (不行&#xff0c;一定要不带空格和不带中文&#xff0c;要不然启动不了试了半天…