矩阵从Python来MATLAB(Matrix from Python to MATLAB)

2019-06-25 08:57发布

我现在使用Python和MATLAB的工作,我有Python中的二维数组,我需要写一个文件,然后可以读取到MATLAB作为基质。 如何做到这一点任何想法?

谢谢!

Answer 1:

如果您使用numpy的/ SciPy的,你可以使用scipy.io.savemat功能:

import numpy, scipy.io

arr = numpy.arange(10)
arr = arr.reshape((3, 3))  # 2d array of 3x3

scipy.io.savemat('c:/tmp/arrdata.mat', mdict={'arr': arr})

现在,你可以使用文件这个数据加载到MATLAB - >加载数据。 选择文件和arr变量(3x3矩阵)将在您的环境中使用。

注:我这样做对SciPy的0.7.0。 (SciPy的0.6具有savematscipy.io.mio模块。)参见最新文档更详细

编辑:更新的链接感谢@gnovice 。



Answer 2:

我认为ARS有(使用Python中的数据保存到.MAT文件最直接的答案savemat )。 只需添加一点点他们的回答,您还可以以编程方式使用加载.MAT文件到MATLAB LOAD函数,而不是使用MATLAB命令窗口菜单做手工的...

您可以使用LOAD的命令语法形式:

load c:/tmp/arrdata.mat

函数的语法形式(如果你有存储在一个字符串的文件路径):

filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);


Answer 3:

我写了一个小功能,做同样的事情,而不需要numpy的。 这需要一个列表的列表,并返回与MATLAB格式矩阵的字符串。

def arrayOfArrayToMatlabString(array):
    return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'

"myMatrix = " + arrayOfArrayToMatlabString(array).m文件,在MATLAB打开它,并执行它。



Answer 4:

你可以在Python矩阵写入到一个CSV文件,并使用csvread在MATLAB读它。



Answer 5:

您也可以拨打MATLAB直接从蟒蛇:

from mlabwrap import mlab
import numpy 
a = numpy.array([1,2,3])
mlab.plot(a)


Answer 6:

我可能会使用numpy.savetxt('yourfile.mat',yourarray)在Python然后yourarray = load('yourfile.mat')在MATLAB。



Answer 7:

工具箱NPY-MATLAB可以读取*.npy二进制文件到MATLAB。 *.npy文件可直接出口与NumPy的模块。 从文档:

>> a = rand(5,4,3);
>> writeNPY(a, 'a.npy');
>> b = readNPY('a.npy');
>> sum(a(:)==b(:))
ans =

    60

NPY-MATLAB是M-文件的简单集合可从GitHub ,用2-clause BSD许可证。



文章来源: Matrix from Python to MATLAB