23

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

有什么方法可以让 MATLAB 仅在命令完成后返回?如果您从单独的程序中调用它,那么等待进程似乎比使用文件或套接字来确认完成更容易。

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

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

我尝试使用以下方法运行它:

matlab -nosplash -nodesktop -r waitHello
4

1 回答 1

25

快速回答:

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%

在这种情况下,启动命令的相关语法(参见 cmd.exe 中的“帮助启动”)是:

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

在所有记录的命令行选项中,我发现(第 60 行)更高一点:

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

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

于 2008-08-18T15:10:43.033 回答