这是我的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运行以下代码,我必须关闭此窗口:
由于这部分代码处于循环中,它确实让我感到不安。 我发现有人在互联网上说matlab可以在执行.m文件后自动退出,但我的意思是没有。有人会告诉我做错了什么或者我该怎么做?谢谢!
答案 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桥库之一。