2009-12-05 5 views
15

मैं एसएसएच लिनक्स सर्वर से कनेक्ट कर रहा हूं और कुछ MATLAB प्रोग्रामिंग करता हूं। मैं के रूप मेंटर्मिनल के तहत मैटलैब अदृश्य प्लॉट को उसी आकार के साथ एक छवि के रूप में सहेजें

figH = figure('visible','off') ; 
% Plot something 
% save the plot as an image with same size as the plot 
close(figH) ; 

saveas() और print() अदृश्य साजिश को बचाने के लिए सहेजी गई छवि को भूखंड के आकार की तुलना में अलग के आकार बदल जाएगा चाहते हैं। print() के लिए, सभी तीन रेंडरर मोड (-opengl, -ZBuffer और -painters) का उपयोग लिनक्स सर्वर पर टर्मिनल इम्यूलेशन मोड में नहीं किया जा सकता है। getframe() या तो काम नहीं करता है। मुझे आश्चर्य है कि मैं इन समस्याओं को कैसे हल कर सकता हूं? धन्यवाद और सम्मान!

+0

आप अपने अंत में एक एक्स सर्वर चल रहे हैं? सर्वर के लिए – Amro

+0

कोई एक्स नहीं। – Tim

उत्तर

15

कनेक्ट और MATLAB शुरू करने के लिए आदेशों की निम्न क्रम का उपयोग करें:

ssh -x [email protected]   # disabled X11 forwarding 
unset DISPLAY    # unset DISPLAY variable 
matlab -nodisplay   # start MATLAB without the desktop 

तो एक सरल साजिश वर्णन करने के लिए:

figure, close     # must do this first, otherwise plot is empty 
plot(1:10)      # usual plotting 
print file      # save the figure as file.ps 
saveas(gcf, 'file.eps', 'eps2c') # saveas aslo works 
exit        # done 

मैं सिर्फ यह अपने आप की कोशिश की, और यह उम्मीद के रूप में काम करता है।


संपादित करें:

तुम हमेशा -r<number> का उपयोग कर डीपीआई संकल्प उदाहरण के लिए यह एक बहुत ही उच्च संकल्प निर्दिष्ट कर सकते हैं:

print -dpdf -r600 file.pdf 

ध्यान दें कि आप -r0 उपयोग कर सकते हैं स्क्रीन रिज़ॉल्यूशन निर्दिष्ट करने के लिए।

भी आप आंकड़ेPaperPositionMode संपत्ति का उपयोग कर के WYSIWYG छपाई पर बारी कर सकते हैं:

figure, close 
plot(1:10) 
set(gcf, 'PaperPositionMode', 'auto') 
print -deps2c -r0 file.eps 
exit 
+0

समस्या यह है कि saveas() या print() का उपयोग करके सहेजे गए छवि आकार को साजिश के समान नहीं बचाता है। – Tim

+0

पहले से ही आपके पिछले प्रश्न में संबोधित नहीं किया गया था: http://stackoverflow.com/questions/1848176/how-not-to-save-non-image-area-in-matlab-image-plot – Amro

+0

समाधान बशर्ते वास्तव में टर्मिनल मोड और मैटलैब अदृश्य प्लॉट के लिए नहीं है (मैंने इसे केवल स्वीकार किया है कि यह एक्स मोड और मैटलैब दृश्यमान साजिश पर काम करता है)। विशेष रूप से getframe() सर्वर से कनेक्ट करने और Matlab चलाने के लिए सुझाए गए तरीके के तहत भी शून्य वापस आ जाएगा। – Tim

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