将终端下的Matlab隐形图保存为相同大小的图像

时间:2009-12-05 19:53:21

标签: matlab command-line save plot

我是SSH连接到Linux服务器并进行一些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)都不能在Linux服务器上的终端仿真模式下使用。 getframe()也不起作用。 我想知道如何解决这些问题? 谢谢和问候!

1 个答案:

答案 0 :(得分:15)

使用以下命令序列连接并启动MATLAB:

ssh -x user@server          # 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>指定DPI分辨率,例如分辨率非常高:

print -dpdf -r600 file.pdf

请注意,您可以使用-r0指定屏幕分辨率。

您还可以使用PaperPositionMode属性启用 WYSIWYG数字打印

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