Question

Je suis en une longue simulation dans que je Matlab me suis rendu compte que je dois arrêter et exécutez à nouveau. Cependant, Matlab est vraiment dans ce calcul, et il a cessé de répondre. Comment puis-je interrompre cette course sans tuer Matlab?

(Je sais que c'est un problème avec de nombreux programmes Windows, mais il est vraiment aigu avec Matlab.)

Était-ce utile?

La solution

Aller à la fenêtre de commande, et appuyez beaucoup Ctrl-C. D'après mon expérience, sur une seule machine-core vous n'avez pas de chance, à moins que vous faire beaucoup de sortie. Sur un multi-core ou machine multi-processeur, vous vous arrêterez probablement par la suite, mais il faut du temps.

Voir aussi http: //www.mathworks. com / support / solutions / fr / data / 1-188VX / index.html

Ajouté : il est une bonne pratique (1) enregistrer un instantané de votre espace de travail avant d'exécuter quoi que ce soit vraiment long et (2) dans un calcul très long, écrire quelques-unes des variables à un fichier de temps à autre, afin que vous puissiez reprendre le calcul si elle a été interrompue (par une panne de courant, par exemple).

Autres conseils

Dans quelle Matlab répond à plutôt CTRL-C dépend de ce qu'il fait. Si elle est au milieu d'un appel par exemple BLAS ou LAPACK, il ne répondra pas jusqu'à ce que les retours d'appels. Si vous êtes dans un bloc de code où beaucoup de lignes de Matlab sont en cours d'exécution, vous pouvez vous attendre CTRL-C pour être plus réactif.

J'ai un truc très simple de faire une pause (ou arrêter) une exécution non recevable. Si ma simulation est en cours d'exécution d'une longue boucle, je fais toujours ce qui suit:

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

Et puis créez un empty_script.m de fichier contenant les éléments suivants:

%keyboard

Chaque fois que je veux mettre en pause l'exécution j'ouvre un éditeur de texte externe et décommenter la ligne en disant keyboard dans empty_script.m. Cela me laisse en mode débogage où je peux regarder les variables, modifier des choses ou même arrêter le programme.

Une autre stratégie pour faire face à ce problème est d'introduire une très courte pause quelque part dans le calcul (en particulier dans une boucle FOR ou WHILE), comme dans:

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

Cela augmente les chances que votre maniaques Ctrl-C'ing se fait arrêter.

vous pouvez trouver le processus Matlab dans les fenêtres gestionnaire de tâches et définir la priorité haute ou basse et laisser d'autres programmes moins prioritaires ou plus. Dans mon expérience, il est un moyen efficace.

si vous l'habitude d'arrêter et puis exécutez à nouveau tuer n'est pas mauvais choix Aller aux tâches de Windows Manager-> Processus puis condamné à une amende matlab.exe et appuyez sur le bouton Terminer le processus

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top