如何在命令行脚本完成之后停止MATLAB的返回?

时间:2008-08-18 12:10:38

标签: command-line matlab

我在MATLAB帮助(matlab -h)中看到我可以使用-r标志指定要运行的m文件。我注意到,当我这样做时,MATLAB似乎启动了脚本,但立即返回。脚本处理正常,但主应用程序已经返回。

有没有办法让MATLAB只在命令完成后返回?如果你从一个单独的程序中调用它,似乎等待进程比使用文件或套接字确认完成更容易。

为了说明,这是一个示例函数waitHello.m

function waitHello
    disp('Waiting...');
    pause(3); %pauses 3 seconds
    disp('Hello World');
    quit;

我尝试使用以下方式运行:

matlab -nosplash -nodesktop -r waitHello

1 个答案:

答案 0 :(得分:24)

快速回答:

matlab -wait -nosplash -nodesktop -r waitHello

在Matlab 7.1(我的版本)中,matlab.bat中有一个未记录的命令行选项-wait。如果它不适用于您的版本,您可以添加它。这是我找到的。最后启动matlab的底部命令是(第153行):

start "MATLAB" %START_WAIT% "%MATLAB_BIN_DIR%\%MATLAB_ARCH%\matlab" %MATLAB_ARGS%

在这种情况下,start命令的相关语法(请参阅cmd.exe中的“help start”)是:

start ["window title"] [/wait] myprogram.exe args ...

在所有记录的命令行选项中,我找到了(第60行):

) else if (%opt%) == (-wait) (
  set START_WAIT=/wait
) else (

所以指定-wait应该做你想要的,只要你也从脚本中退出matlab(否则它会等你以交互方式终止它)。