2011-01-27 9 views
5

में डेटा लोड करने का सबसे तेज़ तरीका है कि Matlab में लोड करने में मुख्य रूप से, क्योंकि यह छोटी-छोटी फ़ाइलें प्रत्येक < 20kb में विभाजित है एक उम्र लेता है क्या है। वे सभी मालिकाना प्रारूप में हैं जिन्हें मैं पढ़ सकता हूं और मैटलैब में लोड कर सकता हूं, बस इतना ही लगता है कि यह इतना लंबा लगता है।मैं डेटा का एक विशाल मात्रा (> 800MB) है मैटलैब

मैं डेटा को पढ़ने और लिखने के बारे में सोच रहा हूं, इसे किसी प्रकार की बाइनरी फ़ाइल में लिखना है जो इसे बाद में पढ़ने के लिए तेज़ी से बनाना चाहिए (जिसमें से कई हो सकते हैं, इसलिए मुझे गति-गति की आवश्यकता है)।

तो, मेरा सवाल यह है कि डिस्क पर उन्हें लिखने के लिए सबसे अच्छा प्रारूप क्या होगा जितना जल्दी हो सके उन्हें वापस पढ़ने के लिए?

मुझे लगता है कि मेरे पास fwrite का उपयोग करके लिखने का विकल्प है, या बस matlab से चर को सहेजना है। मुझे लगता है कि अगर मैं आवश्यक हो तो मैं fwrite विकल्प पसंद करूंगा, मैं उन्हें किसी अन्य पैकेज/भाषा से पढ़ सकता हूं ...

उत्तर

4

देखो, .mat फ़ाइलों के लिए अंतर्निहित प्रारूप के रूप में MATLAB के हाल के संस्करणों द्वारा प्रयोग किया जाता का उपयोग करें। आप hdf5write फ़ंक्शन का उपयोग करके मैन्युअल रूप से अपनी स्वयं की एचडीएफ 5 फाइलें बना सकते हैं, और इस फ़ाइल को एचडीएफ बाइंडिंग वाली किसी भी भाषा से एक्सेस किया जा सकता है (सबसे आम भाषाएं होती हैं, या कम से कम सी कोड को एकीकृत करने का तरीका प्रदान करती हैं जो एचडीएफ 5 लाइब्रेरी को कॉल कर सकती है)।

यदि आपका डेटा संख्यात्मक (और उसी डेटाटाइप) है, तो आपको सादे बाइनरी (fwrite) के प्रदर्शन को हरा करना मुश्किल हो सकता है।

+0

मेरे लिए, ऐसा लगता है कि यह एचडीएफ 5 प्रारूप जीतता है, यह बचत() और समान से 2 और 10 गुना तेज लग रहा था 50 एमबी फाइलों के लिए लोड करने के लिए प्रदर्शन – mor22

+0

आपने संभवतः असम्पीडित एचडीएफ 5 की तुलना जीजीपी संपीड़ित एचडीएफ 5 'सेव' कमांड के उपयोग के साथ की है। आप ['savefast'] (http://www.mathworks.com/matlabcentral/fileexchange/39721-save-mat-files-more-quickly) का प्रयास कर सकते हैं जो मूल रूप से एचडीएफ 5 कार्यों के लिए एक रैपर है जो 'सहेजने जैसा व्यवहार करता है संपीड़न के बिना आदेश। – Daniel

2

बाइनरी मैट-फाइल्स सबसे तेज़ हैं। बस

HDF5 डेटा स्वरूप में
save myfile.mat <var_a> <var_b> ... 
+0

हाँ, मैंने सोचा कि यह हो सकता है। Matlab के बाहर मैट फाइल पढ़ने के लिए विकल्प हैं? – mor22

+1

हां, http://www.mathworks.com/help/techdoc/apiref/bqoqnz0.html#bqoqn5u –

0

मैं लोड हो रहा है में एक अद्भुत गति को हासिल की जब मैं बहुत तरह .mat फ़ाइलें सहेजने के लिए '-v6' विकल्प का प्रयोग किया:

save(matlabTrainingFile, 'Xtrain', 'ytrain', '-v6'); 

यहाँ मैट्रिक्स कि मैं अपने परीक्षण में इस्तेमाल के आकार है। ..

Attr Name     Size      Bytes Class 
==== ====     ====      ===== ===== 
    g Xtest    1430x4000    45760000 double 
    g Xtrain    3411x4000    109152000 double 
    g Xval    1370x4000    43840000 double 
    g ytest    1430x1      11440 double 
    g ytrain    3411x1      27288 double 
    g yval    1370x1      10960 double 

... और प्रदर्शन में सुधार है कि हम हासिल की:

में बदलाव से पहले:

time to load the training data: 78 SECONDS!!! 
time to load validation data: 32 
time to load the test data:  35 

परिवर्तन के बाद:

time to load the training data: 0 SECONDS!!! 
time to load validation data: 0 
time to load the test data:  0 

जाहिर कारण कारण यह इतनी अच्छी तरह से काम करता है पुराने संस्करण 6 संस्करण का उपयोग किया है कि नए संस्करण की तुलना में कम संपीड़न है। तो आपकी फ़ाइल का आकार बड़ा होगा, लेकिन वे तेज़ी से तेज़ी से लोड करेंगे।

संबंधित मुद्दे