出发点:团队其它成员写好的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

matlab python函数 matlab调用python函数_matlab python函数

 

matlab python函数 matlab调用python函数_matlab调用python_02

 下载完成后,运行安装,安装步骤按照默认的勾选即可,并构建添加环境变量。

2、安装完成,将系统环境变量检查添加,win11电脑搜索环境变量,并进入系统属性,选择环境变量选项,添加系统环境变量的变量名和值(python3.7的默认安装路径)

matlab python函数 matlab调用python函数_matlab_03

3、在matlab环境中,选择主页,设置路径选项将python安装路径以添加并包含子文件夹的方式导入python3.7版本的安装路径

matlab python函数 matlab调用python函数_数据分析_04

4、验证python环境是否添加成功及matlab是否能调用python函数

matlab python函数 matlab调用python函数_matlab_05

pyversion

 

matlab python函数 matlab调用python函数_数据分析_06

matlab python函数 matlab调用python函数_matlab_07

 上述说明了python环境已经添加成功

执行python函数

py.list

matlab python函数 matlab调用python函数_matlab_08

 能正确调用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%,然后回车

matlab python函数 matlab调用python函数_python_09

matlab python函数 matlab调用python函数_matlab_10

 在打开的cmd命令窗口中输入pip install numpy,并提示安装成功

7、再次运行numpy函数验证是否安装成功

matlab python函数 matlab调用python函数_matlab_11

 说明安装成功并能被调用

 至此,在matlab中能够调用已经编写好的python函数。matlab参数传递python函数,python函数执行后返回的结果变量,matlab中加载结果变量并调用python函数进行进行数据转换,再结合matlab的优势进行后续处理即可。

参考:

 NumPy 数学函数 | 菜鸟教程