pycharm调用matlab函数

转载自一文实现:在python中调用matlab程序,保姆级安装windows环境下的matlab.engine教程-物联沃-IOTWORD物联网

二、现有环境介绍

我目前的电脑配置:
系统:window11
matlab版本:2018A
python:在anaconda里,可以随时安装任何版本的,但是本人只需要3版本的。

三、在python中安装matlab.engine引擎(实现互联调用)

1、检查自己的matlab支持的python版本

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


  如上图所示,以我自己的电脑为例,我的setup文件所在路径是:E:\CodeTools_AnZhuangJi\Matlab\extern\engines\python
  找到后直接打开,这个打开方式有多种,可以用电脑装的python编译器,比如pycharm之类的,matlab也可以打开,这里我直接用txt打开了,从圈红的地方可以看出我的matlab支持python的版本有2.7,3.5,3.6。
  如果目前所用的python版本有符合要求的就直接用,如果没有就只能重新装一个符合版本的python了。

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

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


  如图所示,我创建了一个叫“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查看是否安装成功。

  如图,当有这个包的时候就证明安装成功了,后面对应的是你的matlab版本,我的matlab是2018A的,所以它显示是R2018a。
  至此,已经成功已经99%了。

四、使用matlab.engine实现在python中调用matlab文件

注意:在pycharm中要正确使用anaconda创建的环境,而不是再新建一个

anaconda创建环境 conda create -n 名字 python=3.7

激活环境(自动进入环境)conda activate 名字

进入环境后,执行一系列安装包的操作,最后可以用pip list命令查看安装了哪些

1、导入matlab.engine引擎

  打开自己的python编译器,配置好刚才弄好的python,确定matlab.engine可以被导入。


注:上图是用pycharm调用虚拟环境中的包的过程,如果各位不是用的pycharm可以将此图自行忽略,只要能保证顺利倒进包即可。

2、python调用matlab通式:

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

讲解:
  其中eng = matlab.engine.start_matlab()表示打开matalb进程,为运行.m文件做准备。
  然后直接eng.你想调用的m文件函数就可以实现python调用m文件了
  eng.quit()的意思是关闭matalb进程,彻底结束调用。

3、实例验证

大家可以自己试试下面这个示例:
首先在matlab里创建一个.m文件:ConnectPthon。
文件的内容是:

function sum = ConnectPython(a,b)
    sum = a +b;
end

  然后将它拖动到python工程文件下,注意:一定要让.m文件和所要调用它的py文件在一个文件目录下,要不然会出现很多问题。


这是ConnectPthon.m在pycharm中打开的样子。
然后创建一个名为:diaoyong的.py文件
文件内容为:

import matlab.engine
eng = matlab.engine.start_matlab()
ass = eng.ConnectPython(2,3)
print(ass)
eng.quit()

  然后开始运行这个py文件,运行结果如下图所示。在这个程序中我们用matlab编写了一个加法程序,函数可以返回参数a+b的值。在python中调用这个函数,成功实现了2+3 = 5


  注意事项:当你所连接的.m文件中又调用了其它的.m文件,务必要将被调用的那个.m文件也放进来,这样才能正常运行。

五、其它方法

  上述这样的方法需要电脑里同时有matlab和python,且在python调用时会打开matlab线程,相当于程序在python和matlab之间不断跳转执行,这样的问题就是会降低执行效率。
  其实还有一种方法可以实现彻底摆脱matlab,那就是利用matlab将.m程序封装成python的一个库,然后在使用的时候直接调用这个python包,这样即使所要运行程序的电脑上没有matlab也可以用。关于这方面的功能我还有没有尝试过,不过哔哩哔哩上有人提出过,大家可以参考下这个视频:

https://www.bilibili.com/video/BV1ei4y1t7Rw?spm_id_from=333.337.search-card.all.click

Ps:这个视频的前半段也讲了如何利用matlab.engine实现python调用matlab函数。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#学习的路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值