3

这是我的python代码

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

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

在此处输入图像描述

由于这部分代码处于循环状态,这真的让我很不安。我在网上发现有人说matlab在执行.m文件后可以自动退出,但我的就是没有。有人告诉我我做错了什么或者我该怎么办吗?谢谢!

4

2 回答 2

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'])
于 2013-04-26T10:53:24.607 回答
2

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

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

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

于 2013-04-26T11:01:32.083 回答