2009-12-05 13 views
15

Bir Linux sunucusuna bağlanan SSH'im ve bazı MATLAB programlamalarını yapıyorum. Ben komplo boyutundan daha farklı kaydedilmiş görüntünün boyutunu değiştirirAynı boyutta bir görüntü olarak terminalin altındaki Matlab görünmez çizimini kaydetme

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

saveas() ve print() olarak görünmez arsa kaydetmek istiyorum. Ayrıca, print() için, tüm üç renderer modu (-opengl, -ZBuffer ve -painters), Linux sunucusundaki terminal öykünme modunda kullanılamaz. getframe() da çalışmıyor. Bu sorunları nasıl çözebilirim acaba? Teşekkür ve saygılarımla!

+0

Eğer sonunda bir X sunucusu yayınlanıyor? Sunucu için – Amro

+0

no X. – Tim

cevap

15

MATLAB'i bağlamak ve başlatmak için aşağıdaki komut dizisi kullanın: Ben de bunu kendim denedim

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 

ve beklendiği gibi çalışır:

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

sonra basit bir arsa göstermek için.


DÜZENLEME:

Hep -r<number> kullanarak DPI çözünürlük, örneğin çok yüksek çözünürlük belirtebilirsiniz: Eğer ekran çözünürlüğünü belirlemek için -r0 kullanabilirsiniz

print -dpdf -r600 file.pdf 

Not.

Ayrıca PaperPositionMode özelliğini kullanarak rakamlar ait WYSIWYG baskı açabilirsiniz:

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

Sorun, saveas() veya print() işlevinin, kaydedilen görüntü boyutu çizim ile aynı şekilde korunmamasıdır. – Tim

+0

, daha önceki bir sorunuzda zaten ele alınmamıştı: http://stackoverflow.com/questions/1848176/how-not-to-save-non-image-area-in-matlab-image-plot – Amro

+0

Çözüm Aslında terminal modu ve Matlab görünmez arsa için sağlanmış olması koşuluyla (sadece X modunda ve Matlab görünür çiziminde çalıştığı için bunu kabul ettim). Özellikle getframe(), sunucuya bağlanmayı ve Matlab'ı çalıştırmayı önerdiğiniz şekilde bile sıfırlayacaktır. – Tim

İlgili konular