我有一个.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文件。上面的命令将打印出没有问题。但是问题出在第三行。无论出于何种原因,以上代码都不会运行第三行。我在做什么错了?
答案 0 :(得分:2)
您正在使用try
语句,而没有捕获或处理发生的任何异常。因此,脚本ABOVE2019_TF01_MatLabCommands_Test.m中发生的任何错误都不会返回到命令行。
您可以通过从命令行运行以下代码来验证这一点:
try; asdfasdfalwelknwerewr_THIS_LINE_SHOULD_ERROR; end;
您应该使用catch
语句来处理返回的任何异常。
如果您是在MATLAB桌面环境(维护用于搜索函数的路径)之外的环境中运行此函数,您确定函数位于搜索路径中吗?像这样,resid_process_GPS
是否位于名为/j078_8
的文件夹中?