Como posso impedir que o MATLAB retorne até que um script de linha de comando seja concluído?

StackOverflow https://stackoverflow.com/questions/14495

  •  08-06-2019
  •  | 
  •  

Pergunta

Vejo na ajuda do MATLAB (matlab -h) que posso usar o -r sinalizador para especificar um m-arquivo para ser executado.Percebo que quando faço isso, o MATLAB parece iniciar o script, mas retorna imediatamente.O script processa bem, mas o aplicativo principal já retornou.

Existe alguma maneira de fazer com que o MATLAB retorne apenas quando o comando for concluído?Se você estiver chamando de um programa separado, parece mais fácil aguardar o processo do que usar um arquivo ou soquetes para confirmar a conclusão.

Para ilustrar, aqui está um exemplo de função waitHello.m:

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

E tento executar isso usando:

matlab -nosplash -nodesktop -r waitHello
Foi útil?

Solução

Resposta rápida:

matlab -wait -nosplash -nodesktop -r waitHello

No Matlab 7.1 (a versão que possuo), existe uma opção de linha de comando não documentada -wait em matlab.bat.Se não funcionar para a sua versão, você provavelmente poderá adicioná-lo.Aqui está o que eu encontrei.O comando na parte inferior que finalmente inicia o matlab é (linha 153):

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

A sintaxe relevante do comando start (consulte "help start" em cmd.exe) neste caso é:

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

Um pouco mais acima, entre todas as opções de linha de comando documentadas, encontrei (linha 60):

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

Portanto, especificar -wait deve fazer o que você deseja, desde que você também saia do matlab do seu script (caso contrário, ele aguardará que você o termine interativamente).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top