首页 > 解决方案 > 使用 SLURM 为 Matlab 设置显示分辨率

问题描述

我曾经在 HPC 集群上运行一些 Matlab 模拟。

集群运行 SLURM。

我的 Matlab 脚本的输出之一是一个 GIF 文件,它显示了我正在模拟的内容的时间演变。GIF 文件的每一帧都是通过“getframe”命令获取的,该命令对显示进行快照。

当我在我的计算机上运行 Matlab 脚本时,GIF 文件看起来很完美,因为快照具有我计算机的分辨率。当我在 HPC 集群上运行相同的 Matlab 脚本并通过 SLURM 提交作业时,GIF 文件看起来很糟糕,因为它的分辨率非常低。毕竟,HPC 集群并没有实际的显示,也许只是一个虚拟的显示。

所以,这是我的问题:我可以在提交作业时更改虚拟显示器的分辨率,以便 Matlab 在模拟期间拍摄的快照看起来是高分辨率的吗?

标签: matlabresolutionscreen-resolutionhpcslurm

解决方案


尝试在调用之前添加以下内容getframe

h = figure;
h.WindowState = 'maximized';

这将确保在捕获快照之前窗口最大化。然后,您应该获得更高分辨率的图像。

如果这不起作用,另一种选择是使用print将每个图像保存到磁盘,您可以在其中明确指定分辨率:

print('-dpng', '-r200', filename)

但随后您将不得不在后续步骤中合并电影中的所有文件。


推荐阅读