【问题标题】:calling several matlab commands from python using os.system使用 os.system 从 python 调用几个 matlab 命令
【发布时间】:2023-10-04 19:33:01
【问题描述】:

我只想从 Python 调用两个 matlab 命令:第一个命令只是添加所需路径的文件夹和子文件夹(addpath(genpath('c:/file1/file2'))),而第二个命令调用我要使用的函数(myfunction.m)。

例如,当我需要调用一个函数时,我总是使用os.system("command"),而当我想调用两个函数时,我总是使用os.system("command1 | command2"),所以我尝试了:

os.system("matlab -r addpath(genpath('c:/file1/file2')) | matlab -r myfunction") 

但显然这会打开两个 matlab 窗口,第一个用于第一个命令,第二个用于第二个命令。我想要的是在同一个窗口中一个接一个地调用这两个命令。但是,如果我简单地尝试:

os.system("matlab -r addpath(genpath('c:/file1/file2')) -r myfunction")

它不起作用......它执行第一个命令(addpath)但它不调用函数......

我做错了什么??关于如何做到这一点的任何想法?我阅读了很多帖子,但它们并不是很有帮助,即使这是一个非常简单的案例。

提前谢谢大家!!非常感谢您的帮助

【问题讨论】:

    标签: python matlab command os.system


    【解决方案1】:

    这个想法是执行以下操作:

    matlab.exe -r "addpath('c:\some\folder'); someFunction(); quit;"
    

    现在您必须将其插入到 os.system 调用中,并正确转义引号...

    例如,你可以试试:

    >>> os.system("matlab.exe -nosplash -nodesktop -wait -r \"addpath('c:\\some\\folder'); someFunction(); quit();\"")
    

    (请注意,反斜杠和双引号会被转义,另外我添加了 -wait 选项,这样命令在 MATLAB 完成执行之前不会返回)。

    【讨论】: