【问题标题】:Run MATLAB script from Python从 Python 运行 MATLAB 脚本
【发布时间】:2020-06-18 19:56:51
【问题描述】:

我正在访问远程系统,启动 MATLAB 的方法是在 ubuntu 终端上执行 ssh 后执行以下操作。

/media/data/software/matlab2018a/bin/matlab -nojvm -nodisplay -nosplash

打开一个简单的 MATLAB vi 类界面,而不打开完整的 GUI。

/media/data/software/matlab2018a/bin/matlab 是我的 MATLAB exe 文件的位置,-nojvm -nodisplay -nosplash 基本上告诉不要像在远程桌面上工作一样打开完整的 MATLAB GUI。

现在,当我在 MATLAB 编辑器中时,我运行以下命令来执行 MATLAB 脚本 script_name

cd location_of_script
script_name

script_name 基本上是读取一些 Python 生成的图像,做一些处理并将结果保存在一些 .txt 文件中。

我想统一这两个步骤的过程。也就是说,一旦我的 Python 函数完成其工作,它应该调用 MATLAB 脚本并仅在保存 .txt 文件时终止。

脚本不需要任何输入参数。

谢谢

【问题讨论】:

标签: python python-3.x matlab


【解决方案1】:

您可以使用subprocess 从 Python 启动 MATLAB。


当您启动 MATLAB 时,您应该使用以下启动标志:

  • sd 设置 MATLAB 工作目录。
  • -r 执行 MATLAB 将运行的语句。

更多关于启动选项的信息here.

import subprocess
subprocess.run("/media/data/software/matlab2018a/bin/matlab -sd \"location_of_script\" -r \"run('script_name');exit\" -nojvm -nodisplay -nosplash")

【讨论】:

  • 您能否给我更多的解释?你想让我在我的 Python 代码末尾执行以下操作吗,import os os.system(str) 其中str 是你答案中的代码?
  • 感谢您提供更新的解决方案。我检查了您提到的 MATLAB 帮助页面。为什么在-sd 之后使用\,就像-sd \"location_of..." 一样。与-r \ "run... 类似,-r 后有一个 \。在 MATLAB 帮助页面中,他们不使用这些斜线。感谢您的帮助。
  • 反斜杠用于转义" 字符。它是必需的,否则 subprocess.run 将无法正常工作。
  • 我尝试了几次,但有细微的变化,但subprocess.run 总是导致错误,说没有这样的文件或目录。只需将给定解决方案中的 subprocess.run 替换为 os.system 即可。不知道这是预期的还是奇怪的,但无论如何都有效。我在 Ubuntu 16.04 LTS 上使用 Python 3.7。
  • 您必须将shell=True 添加到subprocess 命令才能使其工作。
猜你喜欢
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2014-12-20
  • 1970-01-01
相关资源
最近更新 更多