如何使MatLab(.m)文件的所有行都运行?

时间:2019-09-03 16:40:28

标签: matlab

我有一个.m文件,当我手动运行它(意味着已经在MatLab中,然后键入三行)时,它会按预期运行。

我想做的是将这三行放入一个m文件中并运行它,而不是我必须在MatLab中一次输入这些行

这是m文件,我正在尝试运行名为“ ABOVE2019_TF01_MatLabCommands_Test.m”的文件

这是其中的三行:

in_dir_list = {'/j078_8/58667_TF01_G11','/j078_8/58667_TF01_G09',};
out_dir_list = {'/j078_8/58667_TF01_G11','/j078_8/58667_TF01_G09',};
resid_process_GPS(in_dir_list,out_dir_list);

(再次在MatLab中运行这三行,就像我期望的那样)

所以我尝试像这样运行ABOVE2019_TF01_MatLabCommands_Test.m文件

/Applications/MATLAB_R2017a.app/bin/matlab -r "cd /volumes/promiseraid9/workspace/colleen/NewResiduals/j078_8; try, run('ABOVE2019_TF01_MatLabCommands_Test.m'); end; quit" 

它没有错误或者只是退出MatLab而不是运行第三行

如果相反,我将m文件的第三行更改为只打印出in_dir_list文件。上面的命令将打印出没有问题。但是问题出在第三行。无论出于何种原因,以上代码都不会运行第三行。我在做什么错了?

1 个答案:

答案 0 :(得分:2)

您正在使用try语句,而没有捕获或处理发生的任何异常。因此,脚本ABOVE2019_TF01_MatLabCommands_Test.m中发生的任何错误都不会返回到命令行。

您可以通过从命令行运行以下代码来验证这一点:

try; asdfasdfalwelknwerewr_THIS_LINE_SHOULD_ERROR; end;

您应该使用catch语句来处理返回的任何异常。

如果您是在MATLAB桌面环境(维护用于搜索函数的路径)之外的环境中运行此函数,您确定函数位于搜索路径中吗?像这样,resid_process_GPS是否位于名为/j078_8的文件夹中?