Domanda

Sono in esecuzione una lunga simulazione in MATLAB che mi sono reso conto che ho bisogno di smettere ed eseguire di nuovo. Tuttavia, MATLAB è davvero in questo calcolo, ed è smesso di rispondere. Come posso interrompere questo percorso senza uccidere MATLAB?

(mi rendo conto che questo è un problema con molti programmi di Windows, ma è davvero acuta con MATLAB.)

È stato utile?

Soluzione

Vai alla finestra di comando e premere Ctrl-C un sacco. Dalla mia esperienza, su una macchina single-core non si ha la possibilità, a meno che non si fa un sacco di uscita. Su una macchina multi-core o multi-processore, probabilmente fermarlo alla fine, ma ci vuole tempo.

Si veda anche http: //www.mathworks. com / support / soluzioni / it / dati / 1-188VX / index.html

Aggiunto : si tratta di una buona pratica di (1) salvare un'istantanea della vostra area di lavoro prima di eseguire qualsiasi cosa davvero lunga e (2) all'interno di un tempo molto lungo di calcolo, scrivere alcune delle variabili in un file di volta in volta, in modo da poter riprendere il calcolo se è stata interrotta (per mancanza di energia elettrica, ad esempio).

Altri suggerimenti

Come ben MATLAB risponde a CTRL-C, piuttosto dipende da quello che sta facendo. Se è nel bel mezzo di una chiamata o di BLAS LAPACK per esempio, non risponderà fino a quando quella chiamata restituisce. Se siete in un blocco di codice in cui sono in esecuzione un sacco di linee di MATLAB, ci si può aspettare CTRL-C per essere più reattivo.

Ho un trucco molto semplice per mettere in pausa (o interrompere) un'esecuzione non risponde. Se la mia simulazione è in esecuzione un lungo ciclo faccio sempre il seguente:

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

E poi creare un file empty_script.m contenente quanto segue:

%keyboard

Ogni volta che voglio per sospendere l'esecuzione apro un editor di testo esterno e rimuovere la linea dicendo keyboard in empty_script.m. Questo mi lascia in modalità debug, dove posso guardare variabili, modificare roba o addirittura fermare il programma.

Un'altra strategia per affrontare questo problema è quello di introdurre una pausa molto breve da qualche parte nel calcolo (soprattutto in un favore o ciclo WHILE), come in:

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

Questo aumenta le probabilità che il vostro maniacale Ctrl-C'ing effettivamente fermarlo.

è possibile trovare il processo di MATLAB nel Task Manager di Windows e impostare la priorità alta o bassa e lasciare altro programma per avere la priorità inferiore o superiore. Nella mia esperienza, è un modo efficiente.

se voi non di fermarsi e replica poi uccidere non è cattiva scelta Vai a finestre dell'attività Manager-> Processi poi multato MATLAB.exe e premere il pulsante Termina processo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top