Pregunta

Estoy corriendo un largo simulación en MATLAB que me he dado cuenta de que necesito para detener y vuelva a ejecutar. Sin embargo, MATLAB es realmente en este cálculo, y se dejó de responder. ¿Cómo puedo interrumpir este plazo sin matar MATLAB?

(Sé que esto es un problema con muchos programas de Windows, pero es muy aguda con MATLAB.)

¿Fue útil?

Solución

Ir a la ventana de comandos y pulse Ctrl-C mucho. Desde mi experiencia, en una máquina de un solo núcleo que no tiene la oportunidad, a menos que hacer un montón de salida. En una máquina con múltiples procesadores multi-núcleo o, es probable que la detenga el tiempo, pero se necesita tiempo.

http: //www.mathworks. com / support / soluciones / es / datos / 1-188VX / index.html

añadido : es una buena práctica (1) guardar una instantánea de su espacio de trabajo antes de ejecutar cualquier cosa realmente larga y (2) dentro de un tiempo muy largo cálculo, escribir algunas de las variables en un archivo de vez en cuando, para que pueda reanudar el cálculo si se interrumpe (por falta de energía eléctrica, por ejemplo).

Otros consejos

¿Qué tan bien responde a MATLAB CTRL-C en lugar depende de lo que está haciendo. Si está en el medio de una llamada o BLAS LAPACK por ejemplo, que no responderá hasta que regrese la llamada. Si estás en un bloque de código en la que se están ejecutando un montón de líneas de MATLAB, se puede esperar CTRL-C para ser más sensible.

Tengo un truco muy simple para hacer una pausa (o detener) una ejecución no responde. Si mi simulación se ejecuta un bucle largo que siempre hago lo siguiente:

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

Y a continuación, crear un archivo que contiene empty_script.m lo siguiente:

%keyboard

Siempre que quiero hacer una pausa en la ejecución abro un editor de texto externo y elimine la línea que dice keyboard en empty_script.m. Eso me deja en el modo de depuración donde puedo ver las variables, modificar cosas o incluso detener el programa.

Otra estrategia para hacer frente a este problema es introducir un muy breve pausa en algún lugar en el cálculo (especialmente en un PARA o bucle WHILE), como en:

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

Esto aumenta las posibilidades de que su maníaca Ctrl-c'ing realmente detenerlo.

se encuentra el proceso de MATLAB en el administrador de tareas de Windows y establecer la prioridad tan alta o baja y dejar que otro programa a tener menor o mayor prioridad. En mi experiencia, es una manera eficiente.

Si usted no se detenga y vuelva a ejecutar a continuación, matar no es mala elección Ir a tareas de Windows administrador-> Procesos continuación multados matlab.exe y pulse el botón Terminar proceso

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top