在服务器上的MatLab中取消所有警告

sy5wg1nm  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(266)

我使用glmfit()在服务器上(使用SBATCH Slurm)运行了106次批处理分析,它一直输出当我在本地运行时不会出现的警告文件。我收到多种类型的警告类型

Warning: Iteration limit reached

Warning: The estimated coefficients perfectly separate failures from successes

...

所有警告都在glmfit()warning(message(...))中生成
因此,我无法查看我的调试输出。我在分析中的每个脚本的顶部都包含了warning('off','all'),但我仍收到多个警告输出到我使用写入的输出文件

#SBATCH -o <analysis_name>-%j.out
#SBATCH -e <analysis_name>-%j.out

我尝试删除-e行,但仍然收到错误日志(因为它们是matlab错误,而不是系统错误)。

jbose2ul

jbose2ul1#

现在完全按照描述遇到了这个问题,这就是解决它的方法。进行此更改后,警告显示一次。如果您正在运行并行循环,则它将为每个Worker显示一次。
在迭代的最前面做:

lastwarn('', '');

然后,在出现警告的地方之后,执行以下操作:

[warnMsg, warnId] = lastwarn();
if (~isempty(warnId))
    warning('off', warnId);
end

相关问题