23

MATLABヘルプ( )で、フラグをmatlab -h使用して実行する-fileを指定できることがわかります。これを行うと、MATLABがスクリプトを開始しているように見えますが、すぐに戻ります。スクリプトは正常に処理されますが、メインアプリはすでに戻っています。-rm

コマンドが終了した後にのみ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 (私が持っているバージョン) には、文書化されていないコマンド ライン オプション -wait が matlab.bat にあります。お使いのバージョンで機能しない場合は、おそらく追加できます。これが私が見つけたものです。最後に matlab を起動する一番下のコマンドは (153 行目):

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

この場合の開始コマンドの関連構文 (cmd.exe の「help start」を参照) は次のとおりです。

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 に答える