2009-12-05 32 views
15

Tôi đang kết nối SSH với máy chủ Linux và thực hiện một số chương trình MATLAB. Tôi muốn lưu âm mưu vô hình nhưLưu âm mưu vô hình Matlab dưới thiết bị đầu cuối dưới dạng hình ảnh có cùng kích thước

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

saveas()print() sẽ thay đổi kích thước của hình ảnh được lưu khác nhau hơn so với kích thước của cốt truyện. Cũng cho print(), tất cả ba chế độ trình kết xuất (-opengl, -ZBuffer-painters) không thể được sử dụng trong chế độ mô phỏng đầu cuối trên máy chủ Linux. getframe() cũng không hoạt động. Tôi tự hỏi làm thế nào tôi có thể giải quyết những vấn đề này? Cảm ơn và kính trọng!

+0

bạn có đang chạy một máy chủ X ở cuối của bạn? – Amro

+0

không có X cho máy chủ. – Tim

Trả lời

15

Sử dụng các trình tự sau các lệnh để kết nối và bắt đầu MATLAB:

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

sau đó một âm mưu đơn giản để minh họa:

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 

Tôi chỉ cố gắng bản thân mình, và nó hoạt động như mong đợi.


EDIT:

Bạn luôn có thể xác định độ phân giải DPI sử dụng -r<number>, ví dụ như một độ phân giải rất cao:

print -dpdf -r600 file.pdf 

Lưu ý rằng bạn có thể sử dụng -r0 để xác định độ phân giải màn hình.

Ngoài ra bạn có thể bật WYSIWYG in ấn của các nhân vật sử dụng PaperPositionMode tài sản:

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

Vấn đề là việc sử dụng saveas() hoặc print() không bảo toàn kích thước hình ảnh đã lưu giống như âm mưu. – Tim

+0

không phải đã được giải quyết trong câu hỏi trước của bạn: http://stackoverflow.com/questions/1848176/how-not-to-save-non-image-area-in-matlab-image-plot – Amro

+0

Giải pháp cung cấp có thực sự không phải cho chế độ thiết bị đầu cuối và âm mưu vô hình Matlab (tôi chấp nhận nó chỉ dựa trên nó hoạt động trên chế độ X và Matlab có thể nhìn thấy cốt truyện). Cụ thể getframe() sẽ trả về null ngay cả theo cách bạn đề xuất để kết nối với máy chủ và chạy Matlab. – Tim

Các vấn đề liên quan