在python中调用matlab函数

  • 研究生项目
  • 2023.3

一、前言

最近,在做一个信号分选的项目,已有代码matlab算法,但是项目要求用python调用分装,工程同时涉及到了matlab和python两种语言,不太想进行手工的统一(主要是不会,并且统一的过程太麻烦),这就涉及到如何将两种程序整合到一起进行使用,也就是在python中调用matlab函数。

二、现有环境介绍

目前电脑配置

系统:Window 11

Matlab:2022A

Python:在anaconda里,basse环境3.9

三、在python中安装matlab.engine

1.检查自己的matlab支持的python版

方法是找到matlab里自带的python的setup.py文件。一般是在matlab安装目录下的extern->engines->python。

matlab支持python的版本有2.7,3.7,3.8,3.9. 如果目前所用的python版本有符合要求的就直接用,如果没有就只能重新装一个符合版本的python了。

 

2、调整python环境并安装matlab.engine

选择在anaconda里创建一个虚拟环境,从安装适合版本的python开始教大家怎样安matlab.engine。这里用anaconda创建python虚拟环境的方法就不说了,网上一大堆。

图2

如图所示,我创建了一个叫“formatlab“的虚拟环境,它安装的python版本是3.6。 在确定好python准备好后,进入这个python所在的环境,如果你们和我一样选择创建python虚拟环境就得让anaconda propmt进入到这个环境下,如果你的python就装在了window下,那么直接打开cmd就行。 让控制窗口进入到刚才说的matlab中存放setup文件的位置。

 

 

以我的电脑为例,先进入我的python环境:formatlab。我的setup文件在‘E:\CodeTools_AnZhuangJi\Matlab\extern\engines\python’,然后用cd指令进入setup文件所在的位置:输入

cd /d E:\CodeTools_AnZhuangJi\Matlab\extern\engines\python

python setup.py install

之后电脑会自动安装,中间会出很语句,只要不是红色的以Error开头的就不用管,最后会显示成功安装,最后可以在此环境下用pip list查看是否安装成功

 

如果不新建一个虚拟环境,可以直接的打开anaconda的控制版面,按照上述方法安装

如果不是C盘,>D: ,调整到D盘, 在cd 文件夹名字即可

四、python调用matlab格式

首先把matlab文件,包括mat文件和.m运行文件全部拷进python

其中eng = matlab.engine.start_matlab()表示打开matalb进程,为运行.m文件做准备。(一定要包含的)

然后直接eng.你想调用的m文件函数就可以实现python调用m文件了

eng.quit()的意思是关闭matalb进程,彻底结束调用。(可用可不用)

import matlab
import matlab.engine
eng = matlab.engine.start_matlab()
返回值 = eng.所要调用的matlab函数文件(参数)
eng.quit()

解决matlab报错

手动添加 setting>python project>python interpreter 里面,搜索matlab,安装,最后在终端版面检查

解决matlab.engine 报错

如果MATLAB版本支持所使用的python版本,需要进行一下操作将MATLAB与python就行“绑定”

第一步:“win+R”输入“cmd”打开命令行:

第二步:将路径更改为MATLAB安装路径,即“setup.py”文件所在的路径:

第三步:打开我们的python环境

第四步:依次输入以下命令

python setup.py build --build-base="builddir" install
 
python setup.py install --prefix="installdir"
 
python setup.py build --build-base="builddir" install --prefix="installdir"
 
python setup.py install --user

再测试:import matlab.engine

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Python调用MATLAB函数有几种方法。 1. 使用MATLAB Engine API:MATLAB提供了Engine API,可以在Python直接调用MATLAB函数。首先,确保你已经安装了MATLAB,并且已经将MATLAB引擎添加到Python的环境变量。然后,可以使用以下代码示例调用MATLAB函数: ```python import matlab.engine # 启动MATLAB引擎 eng = matlab.engine.start_matlab() # 调用MATLAB函数 result = eng.my_matlab_function(arg1, arg2, ...) # 关闭MATLAB引擎 eng.quit() ``` 在上面的示例,`my_matlab_function`是你想要调用MATLAB函数,`arg1`、`arg2`等是传递给函数的参数。 2. 使用MATLAB Compiler:如果你的MATLAB代码已经被编译为可执行文件或共享库,你可以使用`subprocess`模块在Python调用它。例如,如果你有一个名为`my_matlab_function.exe`的可执行文件,可以使用以下代码调用它: ```python import subprocess # 调用MATLAB可执行文件 result = subprocess.run(['my_matlab_function.exe', arg1, arg2, ...], capture_output=True, text=True) # 输出结果 print(result.stdout) ``` 在上面的示例,`arg1`、`arg2`等是传递给MATLAB可执行文件的参数。 3. 使用MATLAB引擎for Python:MathWorks还为Python提供了MATLAB引擎for Python,它允许你在Python直接调用MATLAB函数,类似于MATLAB Engine API。你可以通过安装`matlab`包来使用它。具体使用方法可以参考MathWorks官方文档。 无论使用哪种方法,你都需要确保已经正确安装了MATLAB,并且将其配置为可以与Python交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值