【问题标题】:command-line matlab script calls give undefined variable/class errors命令行 matlab 脚本调用给出未定义的变量/类错误
【发布时间】:2016-07-27 06:25:33
【问题描述】:

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

我跑的时候:

matlab -nodesktop -nosplash -r "my_script.m"

matlab 会打开并给我一条错误消息说明

Undefined variable "my_script" or class "my_script.m"

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

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

matlab -nodesktop -nosplash -r "run('my_script.m');"

我现在遇到语法错误,

Unexpected MATLAB expression.

Error in run (line 96)
evalin('caller', [script ';'])

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

【问题讨论】:

  • my_script.m 很可能不在您的 Matlab 路径上,因此无法找到它。在尝试运行脚本之前将其添加到您的路径和/或切换当前目录。
  • 我在打开的 matlab 会话中使用 pwd 进行了检查。工作目录是 my_script.m 所在的位置

标签: matlab


【解决方案1】:

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

matlab -nodesktop -nosplash -r "my_script"

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

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

【讨论】:

  • @Max 也请注意,这意味着“打开 matlab 会话并运行脚本”,而不是“运行脚本并退出”。您的 matlab 会话将保持打开状态。如果您只想运行脚本并退出,请执行-r "myscript; exit"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 2013-04-30
  • 2015-04-24
  • 2015-05-21
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
相关资源
最近更新 更多