Pergunta

Estou executando uma longa simulação em MATLAB que eu percebi que eu preciso parar e execute novamente. No entanto, MATLAB é realmente para este cálculo, e ele parou de responder. Como posso interromper este prazo sem matar MATLAB?

(Sei que este é um problema com muitos programas do Windows, mas é realmente aguda com MATLAB).

Foi útil?

Solução

Vá para a janela de comando, e pressione Ctrl-C muito. Da minha experiência, em uma máquina de single-core você não tem uma chance, a menos que você fazer muita saída. Em uma máquina multi-processador multi-core ou, você provavelmente vai pará-lo eventualmente, mas isso leva tempo.

Veja também http: //www.mathworks. com / support / soluções / en / data / 1-188VX / index.html

Adicionado : é uma boa prática (1) salvar um instantâneo de seu espaço de trabalho antes de executar qualquer coisa realmente longa e (2) dentro de um tempo muito longo de cálculo, escrever algumas das variáveis ??em um arquivo de vez em quando, para que você possa retomar o cálculo se ele foi interrompida (por falta de energia, por exemplo).

Outras dicas

Como bem MATLAB responde a CTRL-C, em vez depende do que ele está fazendo. Se ele está no meio de uma chamada BLAS ou LAPACK por exemplo, ele não responderá até que a chamada retorna. Se você estiver em um bloco de código em que lotes de linhas de MATLAB estão sendo executadas, você pode esperar CTRL-C para ser mais ágil.

Eu tenho um truque muito simples pausa (ou parar) uma execução não-responsivos. Se minha simulação está sendo executado um loop tempo eu sempre fazer o seguinte:

for ii = 1:N
   do_stuff();
   clear empty_script;
   empty_script;
end

E, em seguida, criar um empty_script.m arquivo contendo o seguinte:

%keyboard

Sempre que eu quero pausar a execução eu abrir um editor de texto externo e descomente a linha dizendo keyboard em empty_script.m. Isso deixa-me no modo onde posso assistir variáveis, modificar o material ou mesmo parar o programa de depuração.

Outra estratégia para lidar com este problema é a introdução de um período muito curto em algum lugar pausa no cálculo (especialmente em um loop for ou while), como em:

for ii = 1:N
do_stuff();
pause(0.1);
end

Isso aumenta as chances de que seu maníaco Ctrl-c'ing vão realmente pará-lo.

Você pode encontrar o processo de MATLAB no gerenciador de tarefas do Windows e definir a prioridade como alta ou baixa e deixe outro programa para ter maior ou menor prioridade. Na minha experiência, é uma maneira eficiente.

Se você não vai parar e executar novamente, em seguida, matar não é má escolha Ir para tarefas do Windows gerente-> Processos então multado MATLAB.exe e aperte o botão Finalizar Processo

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