在python中创建v7.3的.mat文件

时间:2016-04-01 17:55:57

标签: python matlab matrix-multiplication h5py mat-file

我需要在python或matlab中执行涉及60000X70000矩阵的乘法。我有一个16GB的RAM,并且能够轻松加载矩阵的每一行(这是我需要的)。我能够在python中创建整个矩阵,但不能在matlab中创建矩阵。 无论如何我可以使用h5py或scipy将数组保存为v7.3的.mat文件,以便我可以单独加载每一行?

1 个答案:

答案 0 :(得分:2)

对于MATLAB v7.3,您可以使用需要hdf5storage的{​​{1}},在此处下载文件,解压缩,然后在命令提示符下键入:h5pyhttps://pypi.python.org/pypi/hdf5storage

python setup.py install

如果MATLAB无法一次加载整个内容,我认为你必须将它保存在不同的变量import h5py import hdf5storage import numpy as np matfiledata = {} # make a dictionary to store the MAT data in matfiledata[u'variable1'] = np.zeros(100) # *** u prefix for variable name = unicode format, no issues thru Python 3.5; advise keeping u prefix indicator format based on feedback despite docs *** matfiledata[u'variable2'] = np.ones(300) hdf5storage.write(matfiledata, '.', 'example.mat', matlab_compatible=True) 等中。

然后在MATLAB中将每个块保存为变量

matfiledata[u'chunk1'] matfiledata[u'chunk2'] matfiledata[u'chunk3']

hdf5storage.savemat有一个参数,允许将来正确读取文件,所以值得一试,并遵循scipy.io.loadmat格式...虽然你可以做这样的事情,如果保存数据从MATLAB中可以轻松导入回Python:

load(filename,'chunk1')
do stuff...
clear chunk1
load(filename,'chunk2')
do stuff...
clear chunk2

这将作为字典加载回Python,然后您可以将其转换为您需要的任何数据类型。