【问题标题】:Run MATLAB in non-interactive/batch mode, before R2019a在 R2019a 之前以非交互/批处理模式运行 MATLAB
【发布时间】:2022-12-24 14:19:57
【问题描述】:

从 R2019a 开始,MATLAB 具有以下 command line option

-batch "statement" 以非交互方式运行指定的语句。

我需要使用 R2017a,does not have this option。所以我改用 -r 选项:

-r "statement" MATLAB 启动后立即自动运行指定语句。这有时称为以批处理模式调用 MATLAB。您运行的文件必须位于 MATLAB 的启动文件夹中或位于搜索路径中。不要包括路径名或文件扩展名。将语句括在双引号中(“语句”)。要分隔多个语句,请使用分号或逗号。

这样做的问题是:

  1. 弹出一个 MATLAB 窗口,显示已执行的命令。
  2. 如果 MATLAB 脚本中有错误,整个程序就会挂起。我知道使进程结束的唯一方法是从 MATLAB 中发出 quit,但如果脚本有错误,则永远不会到达 quit
  3. 如果无法访问 MATLAB 许可服务器,则会弹出对话框错误,而不是返回退出代码。

    2的解决方法是wrap the body of the script in a "try/catch",但是不知道R2017a中的其他问题怎么解决。

    我正在考虑使用 MATLAB-Python API,但我必须通过 Python 3.4 或 Python 3.5 来完成,这需要我的项目有一个单独的 python 环境。

【问题讨论】:

  • 您正在列出他们添加 -batch 选项的原因。没有解决方法 AFAIK。弹出的窗口虽然是 Windows 的东西。如果您想要更好的命令行体验,请使用 Linux 或 macOS。 :D

标签: matlab matlab-deployment


【解决方案1】:

您可以使用 Matlab Compiler (mcc) 将您的脚本编译成独立的可执行文件。然后你可以调用可执行文件,而不是启动 matlab 来运行脚本。此方法解决了您的顾虑:

  1. 如果您在 Windows 上运行它,请使用 mcc -e 来禁止弹出窗口。
  2. 应用程序在遇到不可恢复的错误时退出(也称为“崩溃”)。或者使用适当的 try/catch 异常处理。
  3. 您不需要启动 Matlab,因此到达许可证服务器不是问题。事实上,如果您安装 MCR,您甚至不需要安装 Matlab 来运行独立的可执行文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2017-01-10
    • 2012-10-13
    相关资源
    最近更新 更多