Matlab 调用 Python 脚本,,Matlab 调用
Matlab 调用 Python 脚本,,Matlab 调用
Matlab 调用 Python 脚本
最近尝试在 Matlab 环境中调用 Python 脚本,这里总结下碰到的几个问题。
1. Python 模块加载
在 Matlab 函数中,想要将 Python 文件作为模块加载,需要首先修改 Python 环境变量路径
P = py.sys.path;if count(P,modpath) == 0 insert(P,int32(0),modpath);end
修改好路径后,直接使用 import 命令加载 Python 模块会产生错误,需采用以下命令
py.importlib.import_module('analytical_subcritical'); % 加载 python 模块 analytical_subcritical
2. Python 函数调用
在调用 Python 模块中函数时,需将 Matlab 环境中变量转换为 Python 类型的变量传入函数中,部分类型变量可以直接转换,可参考 Matlab 官网—将数据传递给 Python。
在 Matlab 中常用的向量和矩阵转换为 1\(\times\)N 大小可以直接作为 array.array(‘d‘) 类型 Python 变量传入,因此可将输入数据大小转换后直接传入 Python 函数中进行计算。
3. Python 数据处理
在获得 Python 函数返回结果后,需将数据重新转换为 Matlab 类型变量。不同类型变量转换可以参考官网—处理从 Python 返回的数据。
但是这些类型仅为 Python 中部分内建变量类型,对于常用的 Numpy 库返回的 ndarray 类型变量需要进一步转化
value = Python ndarray with properties: T: [1×1 py.numpy.ndarray] base: [1×1 py.NoneType] ctypes: [1×1 py.numpy.core._internal._ctypes] data: [1×24 py.buffer] dtype: [1×1 py.numpy.dtype] flags: [1×1 py.numpy.flagsobj] flat: [1×1 py.numpy.flatiter] imag: [1×1 py.numpy.ndarray] itemsize: 8 nbytes: 24 ndim: 1 real: [1×1 py.numpy.ndarray] shape: [1×1 py.tuple] size: 3 strides: [1×1 py.tuple] [1 2 3]
对于此类型变量转换过程,目前有两种方法。
第一种方式是将 ndarray 变量转换为 Python 的 array.array 类型,随后可利用 double 函数直接转换为 Matlab 变量。
data = double(py.array.array('d',py.numpy.nditer(value))); %d is for double, value is ndarray
第二种是利用 scipy 库将变量储存为 mat 文件,随后在 Matlab 中加载。
import numpy as npimport scipy.iox = np.linspace(0, 2 * np.pi, 100)y = np.cos(x)scipy.io.savemat('test.mat', dict(x=x, y=y))
相比第二种方法,第一种方法更为直接。转换为 Matlab 变量后利用 reshape 修改向量大小即可。
Matlab 调用 Python 脚本
相关内容
- python hex转flaot,,在使用树莓派 mod
- Python之dbm模块的使用,dbm信号强度,0、标识位的介绍f
- python3.6执行AES加密及解密方法,,python版本:3
- Python.whl下载,python编程下载,1、Python E
- Ubuntu18.04安装Python3.6.8,,Ubuntu18.0
- Python中字典的key都可以是什么,python字典的key提取,作者
- 用python实现的简易记牌器的demo,,实现功能很简单:初
- mac命令行切换python版本,mac进入命令行模式,brew安装a
- python_levenshtein 的安装和使用,,下载whl地址:ht
- 【Python】python 2.7.16 x64 百度网盘,python2.7和3.7的区别
评论关闭