2013-08-12 7 views
5

मैं नियमित रूप से एक एकल फाइल में कई आंकड़े (सैकड़ों) निर्यात करना होगा की तुलना में बहुत धीमी है। वर्तमान में मैंMATLAB आंकड़ा निर्यात आर

print('-dpsc2', outfile, '-append'); 

मेरा कोड एक एकल छिपे हुए आंकड़े का उपयोग करता है जिसका उपयोग प्रत्येक नए आकृति के लिए फिर से किया जा रहा है।

अब, समस्या यह है कि मैं प्रति सेकंड लगभग 8 आंकड़ों की अधिकतम निर्यात गति प्राप्त कर सकता हूं। आर में, आप प्रति सेकेंड लगभग 200 आंकड़े आसानी से प्लॉट कर सकते हैं। क्या किसी के पास कोई सुझाव है कि MATLAB की निर्यात क्षमताओं को कैसे बढ़ाया जाए?

जनवरी

+0

मुझे संदेह है कि यह * प्रिंटिंग * के कार्य के बजाय यह आंकड़ा और साजिश * पीढ़ी * हो सकता है, यह धीमा है। कम से कम, ऐसा लगता है कि आपने ग्राफ़ को * उत्पन्न * करने के लिए आवश्यक समय से * प्रिंट * करने के लिए आवश्यक समय को अलग करने के लिए काम नहीं किया है। मैं कहता हूं कि क्योंकि मैं देख सकता हूं कि प्रिंट करने के लिए आप अपने कॉल में हैंडल पास नहीं कर रहे हैं (उदाहरण के लिए, ** ** हैंडल ** तर्क http://www.mathworks.com/help/ पर वर्णित है matlab/ref/print.html)। मैं शर्त लगाता हूं कि यदि आप ग्राफ उत्पन्न करने के लिए कोड पोस्ट करते हैं, तो हम आपको थोड़ा तेज़ करने में मदद कर सकते हैं। या, आप MATLAB प्रोफाइलर का उपयोग स्वयं कर सकते हैं। –

+0

@BobGilmore: नहीं बस उपसंहार करने के लिए आंकड़ों का सबसे सरल मुद्रण भी एक तेजी से कंप्यूटर पर के बारे में 0.11 0.13 करने के लिए सेकंड लेता है, कि क्या मैं 'print' या नहीं करने के लिए एक हैंडल में गुजरती हैं। – horchler

+0

धन्यवाद @BobGilmore। असल में, यह वास्तव में निर्यात के बारे में है, पीढ़ी के बारे में नहीं। आप इसे देख सकते हैं यदि आप बार-बार एक ही आंकड़े निर्यात करते हैं: 'आंकड़ा; साजिश (रैंड (10,10)); टिक; मैं के लिए = 1: 100 प्रिंट ('- dpsc2', 'test.ps', '-append'); अंत; toc' मेरी मशीन पर लगभग 10 सेकंड लेता है। – Jan

उत्तर

6

मुझे आपका दर्द महसूस होता है। यह समस्या यह भी है कि फिल्मों को उत्पन्न करने के लिए getframe फ़ंक्शन इतना अक्षम है। मुझे इसके बारे में पता करने का एकमात्र तरीका एक सरल कार्य लिखना है जो कम-स्तर hardcopy फ़ंक्शन को कॉल करता है। कुछ चेतावनियों के साथ an example of this for image-based graphics है। hardcopy समारोह दोनों 'dpsc2' और 'संलग्न' विकल्प का समर्थन करता है कि print करता है:

hardcopy(gcf,'outfile.ps','-dpsc2','-append'); 

print(gcf,'-dpsc2', 'outfile.ps', '-append'); जबकि लगभग 0.12 सेकंड लेता है, ऊपर मेरी मशीन पर केवल 0.004 सेकंड लेता है!

यदि आप help hardcopy करते हैं तो आपको बहुत अधिक जानकारी नहीं मिलेगी। हालांकि, अगर आपको किसी भी इंजीनियर को रिवर्स करने की आवश्यकता है तो आप print (edit print) या विभिन्न निजी कार्यों को कॉल करने के लिए कोड पढ़ सकते हैं (उदा।, edit private/render, edit private/paperfig, edit private/ghostscript)।

+0

धन्यवाद! ये अद्भुत है! मेरे प्लॉटिंग कोड के लिए, मैं वास्तव में 'हार्डकॉपी' कॉल द्वारा अपने 'प्रिंट' कॉल को प्रतिस्थापित कर सकता था और यह ठीक काम करता था। केवल एक विशिष्टता: एक सफेद पृष्ठभूमि प्राप्त करने के लिए, मुझे रंग बदलने वाले कमांड को निर्यात से ठीक पहले अंतिम ग्राफिक्स कमांड के रूप में कॉल करना पड़ा। एक बार फिर धन्यवाद! – Jan

+0

यह सुनिश्चित नहीं है कि यह आपके लिए लागू होता है, लेकिन लूप अनोलिंग संभवतः आपकी मदद भी कर सकता है। – Veridian

+0

@ स्टारबॉक्स: सुनिश्चित नहीं है कि यह काम करने जा रहा है या नहीं। मैंने 'प्रिंट' का प्रोफाइल किया और यह निर्यात के लिए आंकड़े तैयार करने में काफी समय बिताता है। 'हार्डकॉपी' इसके बहुत ही कोर में एक कमांड प्रतीत होता है। ध्यान रखें – Jan

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