出发点:团队其它成员写好的python函数功能,可以进行数据的导入,但利用python开发环境绘图分析没有用matlab分析的效果好,因此萌发了发挥matlab的绘图优势+原先python写好的功能组合方式。
matlab调用python模块的方式如下说明:
需要在本地电脑安装python,目前matlab2020版本支持python2.7/3.6/3.7。
1、安装python3.7版本(本地电脑之前有python版本为3.9)
Python Release Python 3.7.0 | Python.org
下载完成后,运行安装,安装步骤按照默认的勾选即可,并构建添加环境变量。
2、安装完成,将系统环境变量检查添加,win11电脑搜索环境变量,并进入系统属性,选择环境变量选项,添加系统环境变量的变量名和值(python3.7的默认安装路径)
3、在matlab环境中,选择主页,设置路径选项将python安装路径以添加并包含子文件夹的方式导入python3.7版本的安装路径
4、验证python环境是否添加成功及matlab是否能调用python函数
pyversion
上述说明了python环境已经添加成功
执行python函数
py.list
能正确调用python自带的函数
5、调用用户自定义的python函数
假设python函数为ERead.py
则调用方式为,将ERead.py放到当前目录下,注意是当前目录下,如果是上一级文件夹下或子文件夹下则会出现调用该ERead.py出现找不到该文件的情况,因此放到当前目录下为:当前文件夹下即包含该python文件,并注意该文件路径添加为当前路径
1)调用方式1
command = 'ERead.py';
status = system(command);
该ERead.py文件已经将数据读取并转换为txt保存
在matlab中操作读取该txt文件并加载绘图即可
(但该方式有点繁琐,需要在python中读取某种数据格式文件并转换为txt保存,再利用matlab重新导入txt并绘图),因此想到方法2
2)调用方式2
修改python函数为可以在matlab中输入路径和名称,python函数返回导入的变量到matlab中,在matlab中调用python函数进行数据格式转换,转换后的格式文件直接用matlab函数处理即可。(python编写的函数完全充当了一个接口函数调用)
path="D:/xxx.dat";
Data_list=py.ERead.import_Data(path)
python中导入的数据Data_list为list类型,该类型在matlab中无法简便的处理,为此调用python的numpy函数进行转换。
DATA_Array=py.numpy.array(DATA_list);
存在的问题是:运行py.numpy时出错,原因是没有安装numpy函数,为此需要在之前安装python版本的路径下安装numpy:采用pip的安装方式
6、pip安装python模块的操作方式
在python37版本安装路径的Script下,在路径中输入%comspec%,然后回车
在打开的cmd命令窗口中输入pip install numpy,并提示安装成功
7、再次运行numpy函数验证是否安装成功
说明安装成功并能被调用
至此,在matlab中能够调用已经编写好的python函数。matlab参数传递python函数,python函数执行后返回的结果变量,matlab中加载结果变量并调用python函数进行进行数据转换,再结合matlab的优势进行后续处理即可。
注意:在运行时要切换到py文件所在当前目录下运行。
参考:
【1】matlab下调用python,numpy库函数的方法_帅帅的海盗的博客-CSDN博客_matlab调用numpy
【2】 在MATLAB中调用 Python_风吹我亦散的博客-CSDN博客_matlab调用python程序
【3】 NumPy 数学函数 | 菜鸟教程
【4】 m文档-Call User-Defined Python Module