【发布时间】:2010-11-08 21:04:19
【问题描述】:
我现在正在使用 Python 和 MATLAB,并且我在 Python 中有一个二维数组,我需要将其写入文件,然后能够将其作为矩阵读入 MATLAB。关于如何做到这一点的任何想法?
谢谢!
【问题讨论】:
标签: python matlab file-io import matrix
我现在正在使用 Python 和 MATLAB,并且我在 Python 中有一个二维数组,我需要将其写入文件,然后能够将其作为矩阵读入 MATLAB。关于如何做到这一点的任何想法?
谢谢!
【问题讨论】:
标签: python matlab file-io import matrix
如果使用numpy/scipy,可以使用scipy.io.savemat函数:
import numpy, scipy.io
arr = numpy.arange(9) # 1d array of 9 numbers
arr = arr.reshape((3, 3)) # 2d array of 3x3
scipy.io.savemat('c:/tmp/arrdata.mat', mdict={'arr': arr})
现在,您可以使用 File -> Load Data 将此数据加载到 MATLAB 中。选择文件,arr 变量(一个 3x3 矩阵)将在您的环境中可用。
注意:我是在 scipy 0.7.0 上完成的。 (scipy 0.6 在scipy.io.mio 模块中有savemat。)请参阅latest documentation for more detail
编辑:感谢@gnovice更新链接。
【讨论】:
工具箱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 文件集合 available from GitHub,具有 2 条款 BSD 许可证。
【讨论】:
我可能会在 Python 中使用 numpy.savetxt('yourfile.mat',yourarray)
然后在 MATLAB 中 yourarray = load('yourfile.mat')。
【讨论】:
yourarray = load('yourfile.mat', '-ASCII') 时有效。
你也可以直接从pythoncall matlab:
from mlabwrap import mlab
import numpy
a = numpy.array([1,2,3])
mlab.plot(a)
【讨论】:
【讨论】:
我写了一个小函数来做同样的事情,而不需要 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 文件,然后在 MATLAB 中使用 csvread 读取它。
【讨论】: