मेरे पास MATLAB (संस्करण 7) में 30000x14000 स्पैर मैट्रिक्स है, जिसे मुझे किसी अन्य प्रोग्राम में उपयोग करने की आवश्यकता है। कॉलिंग सेव इसे एएससीआईआई (समर्थित नहीं) के रूप में नहीं लिखेंगे। इस राक्षस पर full()
पर कॉलिंग Out of Memory
त्रुटि में परिणाम।
मैं इसे कैसे निर्यात करूं?मैं एक टेक्स्ट फ़ाइल में एक बहुत बड़ा MATLAB स्पैर मैट्रिक्स कैसे सहेज सकता हूं?
उत्तर
मैंने इसे MATLAB के भीतर जावा का उपयोग करके टेक्स्ट के रूप में सहेजा। MATLAB कोड:
pw=java.io.PrintWriter(java.io.FileWriter('c:\\retail.txt'));
line=num2str(0:size(data,2)-1);
pw.println(line);
for index=1:length(data)
disp(index);
line=num2str(full(data(index,:)));
pw.println(line);
end
pw.flush();
pw.close();
यहाँ data
एक बहुत बड़े विरल मैट्रिक्स है।
क्या आपने इसे विभाजन करने का प्रयास किया था?
मेरा मतलब है कि 1000 पहली पंक्तियों (या 5000) पर पूर्ण() को कॉल करने का प्रयास करें और फिर यह काम करता है तो प्रक्रिया को दोहराएं।
हाँ हमेशा एक विकल्प thats, यह शायद समय लेखन का एक बहुत ले जाएगा एएससीआई चंक्स और बाद में उन्हें विलय कर रहे हैं – Midhat
स्पैर मैट्रिक्स को .mat
फ़ाइल के रूप में सहेजें। फिर, दूसरे प्रोग्राम में, .mat
फ़ाइल पढ़ने के लिए उपयुक्त लाइब्रेरी का उपयोग करें।
उदाहरण के लिए, यदि अन्य प्रोग्राम पायथन में लिखा गया है, तो आप scipy.io.mio.loadmat
फ़ंक्शन का उपयोग कर सकते हैं, जो स्पैस एरे का समर्थन करता है और आपको एक स्पैस numpy मैट्रिक्स देता है।
अन्य प्रोग्राम रैपिमिनर – Midhat
यदि यह एक बार एक सौदा सौदा है, तो मैं सिर्फ मैट्रिक्स के माध्यम से पुनरावृत्ति करता हूं और ब्रूट फोर्स द्वारा एएससीआईआईआई फ़ाइल में मैट्रिक्स लिखता हूं, या अन्यथा @Veynom's सुझाव का उपयोग करें और पंक्तियों के उप-समूह पर पूर्ण() को कॉल करें । इसमें कुछ समय लग सकता है, लेकिन MATLAB पर्यावरण के बाहर .mat फ़ाइल में पढ़ने के तरीके को सीखने के लिए शायद यह तेज़ी से किया जा सकता है।
यदि ऐसा कुछ है जो आपको पुनरावर्ती आधार पर करने की ज़रूरत है, तो मैं @Vebjorn की सलाह लेता हूं और .mat फ़ाइल पढ़ने के लिए लाइब्रेरी का उपयोग करता हूं।
गैर शून्य तत्वों का सूचकांक पाने के लिए find
समारोह का उपयोग करें ...
idcs = find(data);
vals = data(idcs);
...save the index vector and value vector in whatever format you want...
आप चाहते हैं, तो आप ind2sub
उपयोग कर सकते हैं, पंक्ति स्तंभ सबस्क्रिप्ट को रैखिक सूचकांक कन्वर्ट करने के लिए।
यदि आपको सबस्क्रिप्ट + मानों से मैटलैब में एक स्पैर मैट्रिक्स को फिर से बनाने की आवश्यकता है, तो spconvert
का उपयोग करें।
आप सूचकांक & मूल्य वैक्टर पाने के लिए लगता है का उपयोग कर सकते हैं:
[i,j,val] = find(data)
data_dump = [i,j,val]
आप spconvert साथ data_dump है, जो "विरल मैट्रिक्स बाहरी प्रारूप से आयात करें" का मतलब है करने के लिए से डेटा पुन: कर सकते हैं (ताकि मुझे लगता है कि यह एक अच्छी बात है निर्यात प्रारूप):
save -ascii data.txt data_dump
:
data = spconvert(data_dump)
आप के साथ ASCII को बचा सकता है
लेकिन इस डबल के रूप में सूचकांक उदासीनता, आप इसे fopen के साथ और अधिक अच्छी तरह से बाहर लिख सकते हैं/fprintf/fclose:
fid = fopen('data.txt','w')
fprintf(fid,'%d %d %f\n', transpose(data_dump))
fclose(fid)
आशा इस मदद करता है।
fprintf कमांड के दौरान data_dump को दस्तावेज़ों (http://www.mathworks.com/help/matlab/ref/fprintf.html) के अनुसार उपयोग करने से पहले स्थानांतरित किया जाना चाहिए। ऐसा इसलिए होता है क्योंकि डेटा कॉलम-ऑर्डर में लिखा जाता है। –
मैंने सुधार @AlanCN में सुधार किया है। – Joel
dlmwrite - ASCII-सीमांकित फ़ाइल सिंटेक्स के लिए मैट्रिक्स लिखें
dlmwrite (फ़ाइल नाम, एम)
dlmwrite (फ़ाइल नाम, एम, 'डी')
dlmwrite (फ़ाइल नाम, एम , 'डी', आर, सी)
dlmwrite (फ़ाइल नाम, एम, 'attrib1', मान 1, 'attrib2', value2, ...)
dlmwrite (फ़ाइल नाम, एम, '-append')
dlmwrite (फ़ाइल नाम, एम, '-append', विशेषता-मूल्य सूची)
- 1. एक स्पैर मैट्रिक्स को एक फ़ाइल
- 2. एक स्पैर मैट्रिक्स
- 3. स्पैर मैट्रिक्स
- 4. के-मतलब आर में बहुत बड़ा, स्पैर मैट्रिक्स पर क्लस्टरिंग है?
- 5. स्पैर मैट्रिक्स
- 6. कम से कम एक स्पैर मैट्रिक्स?
- 7. एक खाली MATLAB मैट्रिक्स
- 8. मैं एक स्पैर मैट्रिक्स से कुशलता से कॉलम कैसे हटा सकता हूं?
- 9. मैं दृश्य मोड में टेक्स्ट ब्लॉक को विम में फ़ाइल में कैसे सहेज सकता हूं?
- 10. SciPy NumPy और SciKit-learn, एक स्पैर मैट्रिक्स
- 11. मैं MATLAB में एक परिवर्तित छवि को कैसे सहेज सकता हूं?
- 12. MATLAB में इसमें खींची गई रेखा के साथ मैं एक छवि मैट्रिक्स कैसे बना सकता हूं?
- 13. एक बहुत बड़े मैट्रिक्स
- 14. अजगर में स्पैर मैट्रिक्स svd
- 15. मैं फ़ाइल में संरचना कैसे सहेज सकता हूं .... सी लैंग
- 16. मैं MATLAB में एक जीयूआई कैसे प्रोग्राम कर सकता हूं?
- 17. मैं जावा से टेक्स्ट या आईटीएक्सटी खंड के साथ एक पीएनजी कैसे सहेज सकता हूं?
- 18. मैं एफ # में एक मैट्रिक्स कैसे उलटा सकता हूं?
- 19. मैं एक संपादित पीडीएफ कैसे सहेज सकता हूं?
- 20. मैं पीआईएल के साथ एक छवि कैसे सहेज सकता हूं?
- 21. मैं सिसि में एक स्पैर मैट्रिक्स के कॉलम के भिन्नता की गणना कैसे करूं?
- 22. मैं एक चेकबॉक्स कैसे बड़ा कर सकता हूं?
- 23. ओपनसीवी में नई सी ++ स्टाइल मैट्रिक्स ऑब्जेक्ट्स को एक्सएमएल से मैं कैसे सहेज सकता हूं और पढ़ सकता हूं?
- 24. मैं "कॉलम" शब्द के बिना एक बड़ा मैट्रिक्स कैसे प्रदर्शित कर सकता हूं?
- 25. MATLAB में एक मैट्रिक्स को हल करना?
- 26. बहुत बड़े स्पैस मैट्रिक्स
- 27. जावा में एक बहुत, बहुत बड़ा नक्शा बनाना
- 28. एक मैट्रिक्स में एन सबसे बड़ा तत्वों का सूचकांक जाओ
- 29. MATLAB में, मैं छवि को कैसे प्लॉट कर सकता हूं और इसे प्रदर्शित किए बिना परिणाम कैसे सहेज सकता हूं?
- 30. मैं एक नई कुंजी जोड़ी कैसे बना सकता हूं और उन्हें फ़ाइलों में सहेज सकता हूं?
मैं उलझन में हूं - आपने MATLAB के अंतर्निहित फॉपेन और fprintf के बजाय java.io का उपयोग क्यों किया? – SCFrench
शायद क्योंकि मैं matlab से बेहतर जावा जानता था, और यह एक फेंक कोड था, इसलिए इसे सुंदर होने की आवश्यकता नहीं थी। इसे बस सही तरीके से काम करने की आवश्यकता है :) – Midhat