matlab从linux命令行执行脚本

新手上路,请多包涵

有没有办法从 linux 命令行运行 matlab 脚本?例如,我有以下简单的脚本“test.m”:

 x = [1,2,3];
y = [2;3;4];

prod = x*y
disp(prod)

所以我想要的是能够在不打开 matlab GUI 或 matlab 命令行的情况下从 linux 命令行执行该脚本。也就是说,我期待这样的事情:

 ~$ matlab test.m

我希望在 linux 命令行上看到产品的结果。

我知道你可以用 python 做到这一点,例如,

 ~$ python test.py

但想知道是否可以使用matlab实现相同的目标。

原文由 user3578925 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.2k
2 个回答

为了运行脚本,您可以打开 Matlab(您可以使用 -nodisplay-nodesktop 标志来防止在没有 GUI 的情况下运行它),然后使用 run 命令,最后使用 exit 关闭 matlab。

您可以通过一条指令从终端执行所有这些操作:

 matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;"

然而,在运行脚本之前,Matlab 会向控制台输出欢迎消息。要摆脱欢迎信息,只需使用 tail -n +11 跳过前 11 行(10 行取决于您的 Matlab 版本)

因此,您的最终指示将是:

 matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;" | tail -n +11

原文由 user2261062 发布,翻译遵循 CC BY-SA 3.0 许可协议

从 R2019a 开始,对于您的 test.m 脚本,首选方法是:

 matlab -batch "test"

这有几个优点,主要是不需要所有 -no 标志,如果 test.m (必须在搜索路径上)包含错误,MATLAB 将以非零状态退出。

从文档页面, matlab(Linux)

以非交互方式执行 MATLAB 脚本、语句或函数。 MATLAB:

  • 在没有桌面的情况下启动
  • 不显示启动画面
  • 执行 语句
  • 禁用对首选项的更改
  • 禁用工具箱缓存
  • 将文本记录到 stdoutstderr
  • 不显示对话框
  • 如果 脚本 成功执行,则以退出代码 0 自动退出。否则,MATLAB 以非零退出代码终止。

statement 是用双引号括起来的 MATLAB 代码。如果 statement 是 MATLAB 函数或脚本的名称,请不要指定文件扩展名。任何必需的文件都必须位于 MATLAB 搜索路径或启动文件夹中。

在非交互式脚本或命令行工作流程中使用 -batch 选项。不要将此选项与 -r 选项一起使用。

要测试 MATLAB 会话是否以批处理模式运行,请调用 batchStartupOptionUsed 函数。

示例: -batch "myscript"

原文由 bdsinger 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题