命令行 matlab 脚本调用给出未定义的变量/类错误

Max*_*Max 1 matlab

我正在使用命令行 Matlab(即远程 ubuntu linux 工作站)并尝试执行脚本。

当我跑步时:

matlab -nodesktop -nosplash -r "my_script.m"
Run Code Online (Sandbox Code Playgroud)

matlab 将打开并给我一条错误消息,指出

Undefined variable "my_script" or class "my_script.m"
Run Code Online (Sandbox Code Playgroud)

我在 stackoverflow 上发现了一个线程,用户有类似的问题: Matlab: Running an m-file from command-line

但是当我尝试实现建议的语法时:

matlab -nodesktop -nosplash -r "run('my_script.m');"
Run Code Online (Sandbox Code Playgroud)

我现在遇到语法错误,

Unexpected MATLAB expression.

Error in run (line 96)
evalin('caller', [script ';'])
Run Code Online (Sandbox Code Playgroud)

我很少使用 Matlab,更很少使用 oa gui,所以我一直在尝试使用在线留言板中的信息来修复语法,但没有成功。

nir*_*msu 6

您只需要删除.m扩展名:

matlab -nodesktop -nosplash -r "my_script"
Run Code Online (Sandbox Code Playgroud)

原因是这my_script.m不是有效的 Matlab 语句。为了运行脚本/函数,您需要使用其名称来执行它,即my_script. 如果您尝试直接从 Matlab 命令窗口运行my_script.m和语句,您可以看到这一点。my_script

您提到的第二个错误(使用run命令时)似乎是脚本中的实际错误。您似乎忘记复制粘贴最上面一行,该行应显示发生错误的行号。您在下面看到的,即,Error in run (line 96)只是evalin('caller', [script ';'])堆栈跟踪中的第二个条目。它确实确认使用评估脚本时发生错误evalin