问题描述
我过去常常在 HPC 集群上运行一些 Matlab 模拟。
集群运行 SLURM。
我的 Matlab 脚本的输出之一是一个 GIF 文件,它显示了我正在模拟的内容的时间演变。 GIF 文件的每一帧都是通过命令“getframe”获取的,该命令获取显示的快照。
当我在计算机上运行 Matlab 脚本时,GIF 文件看起来很完美,因为快照具有我计算机的分辨率。当我在 HPC 集群上运行相同的 Matlab 脚本,通过 SLURM 提交作业时,GIF 文件看起来很糟糕,因为它的分辨率非常低。毕竟,HPC 集群并没有真正的显示器,也许只是一个虚拟显示器。
那么,我的问题是:我可以在提交作业时更改虚拟显示器的分辨率,以便 Matlab 在模拟过程中拍摄的快照看起来是高分辨率的吗?
解决方法
尝试在调用 getframe
之前添加以下内容:
h = figure;
h.WindowState = 'maximized';
这将确保在捕获快照之前最大化窗口。然后,您应该获得更高分辨率的图像。
如果这不起作用,另一种选择是使用 print 将每个图像保存到磁盘,您可以在其中明确指定分辨率:
print('-dpng','-r200',filename)
但是您必须在后续步骤中合并电影中的所有文件。