如何运行Matlab批处理脚本并保存结果

时间:2018-11-09 03:39:43

标签: bash matlab sh

#!/bin/bash
###########################
#
#PBS -l nodes=1:ppn=12
#PBS -l walltime=00:30:00

XXXXXXXXXx及以下是我有关运行matlab的脚本详细信息 我想保存来自trial.m的结果,但是它不起作用。

export JOBID=`echo "${PBS_JOBID}" | cut -d'.' -f1`
cd ${PBS_O_WORKDIR}
module load matlab/R2017b
matlab
trial.m

我的脚本名称:trial.m 如何将trial.m中的结果保存到我的环境中? 在我的trial.m matlab文件中,我具有以下代码来显示结果,这行得通吗? beta和值是数字的两个向量

disp(betas); 
disp(values);
save('parameters.mat','betas','values');

此外,trial.m需要调用我保存在同一文件中的外部函数,它可以自动调用吗?

1 个答案:

答案 0 :(得分:4)

调用MATLAB并通过以下命令执行trial.m

matlab -r trial -logfile logfile.log -nodisplay -nosplash

确保trial.m完成时退出MATLAB,以继续执行任何后处理步骤。由于脚本非交互运行,因此您还应该隐藏MATLAB GUI和Splash屏幕。另外,请确保trial.m通过使用exit命令强制MATLAB退出。

通过调用trial.m函数来创建.MAT文件,将save的结果保存到环境中。 注意:要使用其他软件访问文件,请调用csvwrite以CSV格式保存。

csvwrite('betas.csv',betas);
csvwrite('values.csv',values);

MATLAB替代Bash

或者,您可以使用MATLAB的parrallel computing toolbox提交作业。在这种情况下,您不再需要bash脚本。但是,您需要修改MATLAB文件以处理向集群(here)提交作业。