运行MATLAB时出现Bash脚本错误



我正试图在集群中运行一个matlab脚本(ga_opt_main.m)。我必须编写一个作业提交文件,它本质上只是一个shell脚本。但我从来没有写过shell脚本,这就是我写的

  #!/bin/bash
  #PBS -q *queuename*
  #PBS -l nodes=1:ppn=20
  #PBS -l walltime=02:00:00
  #PBS -N ga_opt_main
  module load matlab/R2011b
  module list
  unset DISPLAY
  matlab -nodisplay -nodesktop -r *directory path/ga_opt_main.m*

MATLAB在后台打开,但我的工作没有运行。相反,我得到了一个错误文件,上面写着

  bash: -c: line 0: syntax error in conditional expression
  bash: -c: line 0: syntax error near `fraction'

关于为什么会发生这种情况以及如何避免这种情况,有什么想法吗?谢谢

我以前从未使用过PBS,但要从shell运行MATLAB脚本,请尝试以下操作:

matlab -nodesktop -nodisplay -r "addpath('/directory/path'); ga_opt_main; quit;"

其中ga_opt_main.m是脚本文件的名称,'/directory/path'是脚本文件所在的目录。请注意,您必须在MATLAB路径上对该脚本有任何其他依赖关系。

还有一个方便的RUN功能可以做类似的事情:

matlab ... -r "run('/directory/path/ga_opt_main.m'); quit;"
 ###############################
 #!/bin/sh
 #PBS -l nodes=1
 #PBS -l walltime=2:0:0
 #PBS -j oe
 #PBS -o localhost:/dev/null
 #PBS -d /your/working/directory

     cd $PBS_O_WORKDIR
     matlab -nodisplay -nodesktop -nojvm -nosplash -r "your_matlab_function"

我喜欢将addpath(genpath('~/your/script's/home'));添加到实际的matlab脚本/函数中。此外,不要在matlab文件名中添加".m"。

最新更新