2012-04-05 11 views
5

मैं .png फ़ाइलों के रूप में आंकड़ों की एक बड़ी श्रृंखला मुद्रित कर रहा हूं। प्रत्येक आंकड़ा डेटा मैट्रिक्स से कॉलम का एक साजिश है, और मैं .png फ़ाइलों को लेता हूं और उन्हें एक एनीमेशन में एक साथ स्ट्रिंग करता हूं।बहुत सारे (.png) आंकड़े प्रिंट करते समय MATLAB धीमा क्यों होता है?

मेरी समस्या यह है कि पहली कुछ सौ छवियां जल्दी प्रिंट करती हैं, लेकिन प्रत्येक नई आकृति बनाने के लिए समय की मात्रा तेजी से बढ़ जाती है, पहले कुछ सौ .png फ़ाइलों के लिए ~ 0.2 सेकंड से 800 सेकंड के आसपास 2 सेकंड या उससे अधिक तक आंकड़ा।

स्क्रिप्ट के चलते मेमोरी उपयोग बढ़ता है, लेकिन केवल कुछ ही सेकंड में 1 एमबी तक होता है। यह Windows पर R2009b 64-बिट चल रहा है।

मेरे कोड तरह दिखता है:

n = 1000; 
matrix = rand(n); 

f = figure('Visible','off'); % create the figure 

for i_ =1:n 
    plot(1:n,matrix(:,i_)); 
    ylim([0 1]); 
    set(f,'PaperUnits','inches','PaperPosition',[0 0 6 4]); 
    png_name = [ 'img/timestep_' sprintf('%05d',i_) ]; 
    print('-dpng', png_name); 
end 
+0

क्या आप एक समय में केवल 500 कर सकते हैं? एक ऐसी सेवा है जो आपके ऐप को पुनरारंभ करेगी? –

+3

मैं इसे पर्याप्त तनाव नहीं दे सकता ... MATLAB में एक अद्भुत प्रोफाइलर बनाया गया है और आपको इसे नियमित रूप से उपयोग करना चाहिए। प्रोफाइलिंग इन मुद्दों में से कई को पहचानने में मदद करता है। – linuxuser27

उत्तर

4

भूखंड को पुनर्जीवित करने की कोशिश न करें, लेकिन केवल प्रत्येक यात्रा पर XData और YData गुणों को बदलने:

set(f,'PaperUnits','inches','PaperPosition',[0 0 6 4]); 
h = plot(1, matrix(:,1)); 
ylim([0 1]); 

for i_ = 1:n 
    set(h, 'XData', 1:n, 'YData', matrix(:,i_)) 
    png_name = sprintf('img/timestep_%05d',i_); 
    print('-dpng', png_name); 
end 

एक और सुझाव। अगर आप एनीमेशन बनाना चाहते हैं, तो आप पीएनजी फाइल क्यों बना रहे हैं? GETFRAME का उपयोग करें और सीधे MATLAB में MOVIE बनाएं।

2

यह एक स्मृति रिसाव की तरह लगता है। आप मैटलैब को लूप में प्रत्येक चित्र को बनाने और closing बनाकर लीक मेमोरी को रिलीज़ करने में सक्षम हो सकते हैं।

for i = 1:n 
    f = figure; 
    % plot 
    % print 
    close(f) 
end 

अद्यतन:Here's a question and answer कह रही है कि इस तकनीक का काम करता है।

+0

कोशिश नहीं की, लेकिन अगर कोई छवि बंद करना और नया बनाना कुछ समय लगता है, तो केवल हर 100 छवियों को करने पर विचार करें। –

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