我现在使用Python和MATLAB的工作,我有Python中的二维数组,我需要写一个文件,然后可以读取到MATLAB作为基质。 如何做到这一点任何想法?
谢谢!
我现在使用Python和MATLAB的工作,我有Python中的二维数组,我需要写一个文件,然后可以读取到MATLAB作为基质。 如何做到这一点任何想法?
谢谢!
如果您使用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具有savemat
中scipy.io.mio
模块。)参见最新文档更详细
编辑:更新的链接感谢@gnovice 。
我认为ARS有(使用Python中的数据保存到.MAT文件最直接的答案savemat )。 只需添加一点点他们的回答,您还可以以编程方式使用加载.MAT文件到MATLAB LOAD函数,而不是使用MATLAB命令窗口菜单做手工的...
您可以使用LOAD的命令语法形式:
load c:/tmp/arrdata.mat
或函数的语法形式(如果你有存储在一个字符串的文件路径):
filePath = 'c:/tmp/arrdata.mat';
data = load(filePath);
我写了一个小功能,做同样的事情,而不需要numpy的。 这需要一个列表的列表,并返回与MATLAB格式矩阵的字符串。
def arrayOfArrayToMatlabString(array):
return '[' + "\n ".join(" ".join("%6g" % val for val in line) for line in array) + ']'
写"myMatrix = " + arrayOfArrayToMatlabString(array)
到.m
文件,在MATLAB打开它,并执行它。
你可以在Python矩阵写入到一个CSV文件,并使用csvread在MATLAB读它。
您也可以拨打MATLAB直接从蟒蛇:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
我可能会使用numpy.savetxt('yourfile.mat',yourarray)
在Python然后yourarray = load('yourfile.mat')
在MATLAB。
工具箱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许可证。