我是靠谱客的博主 健壮哈密瓜,最近开发中收集的这篇文章主要介绍python调用matlab的.m函数并获取返回参数1.说明及matlab脚本安装2.python程序如何调用matlab的.m函数并获得返回数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

python调用matlab函数(测试版本:python3.6;matlabR2019a)

  • 1.说明及matlab脚本安装
    • Step 1.前提条件
    • Step 2.为python环境安装matlab插件
    • Step 3.选择自己所要使用的python环境
    • Step 4.安装matlab脚本
  • 2.python程序如何调用matlab的.m函数并获得返回数据
    • 1.包的引入
    • 2.python调用matlab函数实际操作
    • 注意事项
    • 建议

1.说明及matlab脚本安装

在日常的科研、学习中,经常会验证某些算法的实际效果,但是有时别人的一些验证算法是用matlab编写,而自己的程序则是使用python编写,这会给一些算法的比较方面带来问题,于是本篇博客为python调用matlab中的.m函数,并返回.m函数返回的系数矩阵。

Step 1.前提条件

1.需要调用的.m函数可以在matlab上成功运行

Step 2.为python环境安装matlab插件

步骤1:找到matlab安装路径下的该文件夹
在这里插入图片描述
在自己电脑按照实际情况找到extern-----engines------python路径下

步骤2:在该路径下进入cmd终端
在这里插入图片描述
在图中cmd的位置输入cmd,进入终端如下所示:
成功以后如下图所示:
在这里插入图片描述

Step 3.选择自己所要使用的python环境

我这里使用的anaconda配置的虚拟环境,我需要使用py361虚拟环境,所以就输入命令activate py361用于激活该环境。
在这里插入图片描述

Step 4.安装matlab脚本

在如上环境下输入命令python setup.py install
在这里插入图片描述
安装结果:
在这里插入图片描述
出现如上即表示安装成功了。

2.python程序如何调用matlab的.m函数并获得返回数据

1.包的引入

import matlab.engine

2.python调用matlab函数实际操作

#Step 1:首先启动matlab(非界面)
engine = matlab.engine.start_matlab()#启动matlab
#Step 2:将传入参数转为list,注意:matlab不接收numpy数组
filename = filename.tolist()
#STep 3:调用对应.m函数,并得到返回结果
gfccs = engine.getgfcc1(filename) #因为matlab没有numpy所以其返回的结果为list cell形式
gfccs = np.array(gfccs)
# 所以再需要将其转为numpy形式的数组
#Step 4:后续操作
这里继续进行后续内容的开发即可,~~

注意事项

1.上边的engine.getgfcc1()命令是具体的调用matlab函数命令,其中getgfcc1()函数为对应的getgfcc1.m文件,filename为传入的文件名

2.matlab的getgfcc1.m文件和对应的python文件在同一个文件路径下

3.如果调用的函数内又调用了其他的函数,建议将其他函数也一并放在getgfcc1.m的函数内容后边,如下所示:

在这里插入图片描述

建议

有时matlab函数其输入的参数很复杂,可能也会出现其他传入参数的错误,这里写一下我自己在摸索过程中的建议吧:
1.如果传入参数过多导致某些参数在python中传入matlab报错,建议手动修改对应的.m文件,尽量减少参数的传入,比如我这里之前getgfcc1.m需要传入较多参数,后来经过手动修改,现在只需要输入一个文件名字即可了。

最后

以上就是健壮哈密瓜为你收集整理的python调用matlab的.m函数并获取返回参数1.说明及matlab脚本安装2.python程序如何调用matlab的.m函数并获得返回数据的全部内容,希望文章能够帮你解决python调用matlab的.m函数并获取返回参数1.说明及matlab脚本安装2.python程序如何调用matlab的.m函数并获得返回数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部