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

Tim*_*Tim 15 matlab plot command-line save

我是SSH连接到Linux服务器并进行一些MATLAB编程.我想把隐形情节保存为

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

saveas()并且print()将改变保存的图像比图的大小不同的大小.还对print()所有三个渲染器模式(-opengl,-ZBuffer-painters)不能在终端仿真模式中使用的Linux服务器上.getframe()也不起作用.我想知道如何解决这些问题?感谢致敬!

Amr*_*mro 15

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

ssh -x user@server          # disabled X11 forwarding
unset DISPLAY               # unset DISPLAY variable
matlab -nodisplay           # start MATLAB without the desktop
Run Code Online (Sandbox Code Playgroud)

然后是一个简单的情节来说明:

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
Run Code Online (Sandbox Code Playgroud)

我自己尝试过,它按预期工作.


编辑:

您始终可以使用-r<number>例如非常高的分辨率指定DPI 分辨率:

print -dpdf -r600 file.pdf
Run Code Online (Sandbox Code Playgroud)

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

您还可以使用以下属性打开WYSIWYG数字打印PaperPositionMode:

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