Python调用MATLAB

Python调用matlab及其配置方法

v2-54aa039ab0b90b6fad1d66cf6e530483_l.webp?source=57bf9c9b&consumer=ZHI_MENG

Flighting

Python和matlab作为工学数据处理的热门工具,为了重复造轮子,提高效率,学会用Python直接调用matlab函数是一项必不可少的技能。下面就简单介绍下:1. python调用matlab方法2. python配置matlab的方法,3. 其它介绍

1 python 调用 matlab方法

下面就以简单实例来展示

1.1 matlab函数

multiplication_matlab.m文件是自己用matlab编写的乘法函数如下:

function a = multiplication_matlab(b,c)
a = b * c
end

1.2 python函数

python 调用该乘法.m函数如下,命名为1.py:

import matlab.engine               # import matlab引擎

# 启动一个新的MATLAB进程,并返回Python的一个变量,它是一个MatlabEngine对象,用于与MATLAB过程进行通信。
eng = matlab.engine.start_matlab() # 可以调用matlab的内置函数。                                  
d = eng.multiplication_matlab(3,2) # 可以调用matlab写的脚本函数
print('d', d, type(d))

1.3 运行结果

运行结果见下

v2-3061f66c1051ae4e448da4de751c4511_b.webp?consumer=ZHI_MENG

python 调用 matlab输出结果

由结果可知,python成功调用了matlab的.m文件,并返回正确结果。

调用方法很简单,就不赘述了,见python文件1.py中代码即可。当然不可能直接让你调用matlab的,需要做一些简单的配置,见下一章节描述。

2 python 配置 matlab的方法

2.1 确认配置版本

python版本和matlab版本是有一一对应关系的,否则无法建立联系,对应关系见下。https://www.mathworks.com/content/dam/mathworks/mathworks-dot-com/support/sysreq/files/python-compatibility.pdf

v2-56fa6e5b6227adf540d5086db7477175_b.webp?consumer=ZHI_MENG

python 与 matlab 版本对应关系

由图可知Python3.8解释器需要 matlab2020b以上版本,Python3.7解释器需要 matlab2019a以上版本等等依此类推。

根据这张图确定你的python解释器去安装对应的matlab版本。

2.2 进行配置

matlab的安装方法就不累赘了,这里已默认你安装好了对应版本的matlab。

① 确定matlab安装路径

确认好matlab的安装路径,如若不清楚,可以打开matlab命令窗口输入matlabroot,如图

v2-c6ac9c26911c8e0d6f548f400cb1dbfd_b.webp?consumer=ZHI_MENG

matlabroot 返回安装路径

笔者的安装路径为C:\install\matlab2021。

② matlab里面找到python engine

大部分python库都是通过pip来安装的,而matlab自R2014b以后引入了MATLAB engine这一功能, 提供了对Python的支持,matlab.engine的安装不是通过pip安装的。

在上述步骤①中的matlab的安装路径里找到: matlab安装路径\extern\engines\python,笔者是C:\install\matlab2021\extern\engines\python,进入路径见下图,发现里面有个python,点开python里面有个setup.py。

v2-db8a1da24698120bd3893afce4b495fc_b.webp?consumer=ZHI_MENG

matlab安装路径\extern\engines 文件夹

v2-2be54cc4b893734cb1491ce4cff9f56f_b.webp?consumer=ZHI_MENG

matlab安装路径\extern\engines\python 文件夹

③ cmd方法配置连接

在上述①和②步骤找到的python engine路径,即matlab安装路径\extern\engines\python,笔者的是C:\install\matlab2021\extern\engines\python,在cmd中确定该位置,方法如下:

window界面左下角输入cmd,打开命令提示符

v2-682221ccc4fea6658c4f43eb955b9bb1_b.webp?consumer=ZHI_MENG

打开命令提示符

点击命令提示符后,进去找到python engine的位置,见下图,键入语句

cd matlab安装路径       # 笔者是cd C:\install\matlab2021

键入之后cmd路径已经改为matlab的路径

v2-8c568fd45269aa8e07a5e39510a7ca10_b.webp?consumer=ZHI_MENG

找到matlab安装路径

在上面的基础上再次键入matlab engine路径,输入语句,见下图

cd "extern\engines\python"  

v2-8fcf50ec33edc9a1dbd73b8cc8b64e85_b.webp?consumer=ZHI_MENG

找到matlab engine路径

enter确认后,我们发现cmd已经进入了python engine 路径,见下图红色方框,在后面输入语句,见下图椭圆方框,enter 确认。

python setup.py install

v2-0fce9d045fc72f9c3ab7526574768503_b.webp?consumer=ZHI_MENG

cmd进行配置

enter确认后发现cmd界面运行一堆语句,咱不用管,见下运行过程

v2-93b1d8ed20c6e4d6e0142dc2ec3e02f6_b.webp?consumer=ZHI_MENG

cmd配置过程

拖到运行的最后部分,见下图标红框部分

............R2021a-py3.7.egg-info,这告诉我们python3.7 解释器可以调用matlab了,注意一定是3.7解释器哦。

v2-dee0e702d56f7db60869c15feb9eba5f_b.webp?consumer=ZHI_MENG

查看配置版本

运行完之后我们发现之前的python engine路径多了些文件,见下图,相比之前多了一个build文件夹

v2-faff83baa4b411b7fc0c462b9c7f0ec2_b.webp?consumer=ZHI_MENG

cmd配置完后 python engine路径多了其它文件

至此python配置matlab就已经配置完成了,就可以用上述第1章介绍的python 调用 matlab方法 进行调用matlab函数了。

2.3 配置总结

实际以上总结就是在cmd中输入以下两句,分别按enter确认。

cd "matlab路径\extern\engines\python"   # 笔者的是 cd "C:\install\matlab2021\extern\engines\python"
python setup.py install

以上是在window环境中输入的语句,对于Mac 或者Linux系统中输入如下语句,并分别按enter确认。

cd "matlab路径/extern/engines/python"   # 笔者的是 cd "C:/install/matlab2021/extern/engines/python" 
python setup.py install

3 其它介绍

3.1 ImportError: No module named matlab.engine

如果import matlab.engine时出现了ImportError: No module named matlab.engine,见下图

v2-38fa58e2d3d6c8f391c8ab75d570b721_b.webp?consumer=ZHI_MENG

No module named matlab.engine

参考

Python和matlab混编时,遇到问题:ImportError: No module named matlab.engine"的解决方法_放下扳手&拿起键盘的博客-CSDN博客_import matlab.engine

简言之,在cmd中切换到python engine路径下,即 matlab安装路径\extern\engines\python,笔者是C:\install\matlab2021\extern\engines\python,同样用上述2.2中的方法进入python engine路径,依次输入以下语句,并以此点击enter确认

v2-a13570d0f43adcf57ed2e9be3209c40d_b.webp?consumer=ZHI_MENG

笔者python engine路径(matlab安装路径\extern\engines\python)

python setup.py build --build-base="builddir" install

python setup.py install --prefix="installdir"

python setup.py install --prefix="installdir"

python setup.py install --user

执行完后会在python engine路径中生成如下文件夹

v2-a7f1f3b8767f3e641fed7ad55eed2b69_b.webp?consumer=ZHI_MENG

执行完后生成新的文件夹

3.2 python解释器选择

笔者配置完后发现调用matlab只能用python3.7的解释器,即运行.py代码如果调用matlab 的话只能用3.7解释器,那么怎么选择python代码的解释器呢。见下图,笔者用pycharm 选择。

File->settings

v2-a9a8c487d7afff0cbf6bf1d9a194d81a_b.webp?consumer=ZHI_MENG

v2-e58789e0623fb0e32925a4b23c793c88_b.webp?consumer=ZHI_MENG

点击上图右上角图标,选择Show All

v2-8f7270451875bd7238ba82702ac47a01_b.webp?consumer=ZHI_MENG

选择3.7的解释器就行

v2-924434cbf6131cee0861bf3558f13959_b.webp?consumer=ZHI_MENG

这样就可以选定对应解释器版本。

具体的虚拟环境创建可以参见Pycharm中创建虚拟环境 - 知乎 (zhihu.com)

编辑于 2023-05-18 · 著作权归作者所有

 赞同 47

评论

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值