从命令行运行matlab脚本后如何退出?

时间:2013-04-26 10:50:29

标签: python matlab

这是我的python代码

DosCmd = 'matlab -wait -automation -nosplash -r "run \'' + to_run + "'\""
os.system(DosCmd)
curve_file = open('curve/'+str(index)+'.curve','r') 

我在python脚本中运行.m文件,它运行正常,但在执行.m文件后,它被卡在os.system(DosCmd)中。 为了使python运行以下代码,我必须关闭此窗口:

enter image description here

由于这部​​分代码处于循环中,它确实让我感到不安。 我发现有人在互联网上说matlab可以在执行.m文件后自动退出,但我的意思是没有。有人会告诉我做错了什么或者我该怎么做?谢谢!

2 个答案:

答案 0 :(得分:4)

exit的调用添加到您执行的MATLAB代码中。

DosCmd = 'matlab -wait -automation -nosplash -r "run \'' + to_run + "', exit\""

您的引用看起来有些不可思议,但您只需要在, exit参数中传递的命令末尾添加-r

顺便说一下,使用subprocess可以轻松实现这一目标,以便让subprocess为您做报价。

subprocess.check_call(['matlab', '-wait', '-automation', '-nosplash', 
    '-r', 'run \' + to_run + \', exit'])

答案 1 :(得分:2)

将命令exit添加到脚本的最后一行 -wait命令行开关意味着在matlab退出之前,启动器应用程序不会关闭。如果你正在让python对ML输出做一些事情,那么-wait是正确的,否则摆脱-wait。

另外,你确定你真的想在每次循环中启动新的matlab会话吗? Matlab公开了DDE功能,允许您打开一个实例并发送命令。

或者,您可以查看PyMat或mlabwrap等,这是现有的python到matlab桥库之一。