Como posso impedir que o MATLAB retorne até que um script de linha de comando seja concluído?
-
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
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).