2016-04-01 19 views
1

Python veya matlabda 60000X70000 matrisini içeren çoğaltma gerçekleştirmem gerekiyor. 16GB'lık bir RAM'ım var ve matrisin her bir satırını kolayca yükleyebiliyorum (buna ihtiyacım var). Matrisi bir bütün olarak python'da oluşturabilirim ama matlabda değil. Yine de her satırı ayrı ayrı yükleyebilmem için diziyi h5py veya scipy kullanarak v7.3 .mat dosyası olarak kaydedebilir miyim?Python'da v7.3'ün bir .mat dosyası oluşturma

cevap

2

MATLAB v7.3 için hdf5storage'u h5py numaralı telefonu kullanabilirsiniz, dosyayı buradan indirin, ayıklayın ve bir komut isteminden: python setup.py install yazın. MATLAB kerede her şeyi yüklemek yapamıyorsanız https://pypi.python.org/pypi/hdf5storage

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) 

, sana farklı değişkenler kaydetmek gerekecek düşünüyorum matfiledata[u'chunk1'] matfiledata[u'chunk2'] matfiledata[u'chunk3'] vb Eğer her öbek kaydederseniz MATLAB'ta Sonra

değişken vb

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

hdf5storage.savemat P içine okunacak dosyanın izin vermek için bir parametre vardır Eğer böyle bir şey yapmak rağmen ython doğru yüzden incelemeye değer ve scipy.io.loadmat biçimine uygundur gelecekte ... MATLAB'den verileri kaydetme kolay Python geri almak için yapmak durumunda:

MATLAB  
save('example.mat','-v7.3') 
Python 
matdata = hdf5storage.loadmat('example.mat') 

Bu, Python'a bir sözlük olarak geri yükler, daha sonra ihtiyacınız olan veri tiplerine dönüştürebilirsiniz.

+0

Sözlük adlarının adını u'name olarak yazmayı unuttunuz mu? – Matt

+0

Teşekkürler! Ama 'hdf5storage.write' komutunu çalıştırmaya çalışırken bir bellek hatası alıyorum bir geçici çözüm var mı? –

+0

evet Şimdi çözdüğüm sözlük anahtarının doğru sözdizimini unuttum. –