首页 > 解决方案 > 如何让我的 MatLab (.m) 文件的所有行运行?

问题描述

我有一个 .m 文件,当我手动运行它时(意味着已经在 MatLab 中,然后键入三行),它就像它应该运行的那样运行。

我想要做的是将这三行放入 am 文件并让它运行,而不是我必须在 MatLab 中输入这些行

这是我尝试运行的名为“ABOVE2019_TF01_MatLabCommands_Test.m”的 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 的内容。上面的命令将打印出来没有问题。但问题出现在第三行。无论出于何种原因,上面的代码都不会运行第三行。我究竟做错了什么?

标签: matlab

解决方案


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

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

try; asdfasdfalwelknwerewr_THIS_LINE_SHOULD_ERROR; end;

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

如果您从 MATLAB 桌面环境(维护搜索函数的路径)外部运行此程序,您确定您的函数位于搜索路径中吗?如,resid_process_GPS位于名为/j078_8?


推荐阅读