2010-03-08 3 views
34

Я использую длинную симуляцию в MATLAB, что я понял, что мне нужно остановиться и повторить. Тем не менее, MATLAB действительно участвует в этом расчете, и он перестает отвечать. Как я могу прервать этот прогон, не убив MATLAB?Как я могу прервать MATLAB, когда он действительно занят?

(Я понимаю, что это проблема со многими программами Windows, но это действительно острый с MATLAB.)

+1

Ctrl-C не работает? – Dirk

+2

Duplicate: http://stackoverflow.com/questions/1500314/how-to-abort-a-running-program-in-matlab – gnovice

+1

Нет, это проблема. –

ответ

22

Перейти к окну команды, и нажмите Ctrl-C много. По моему опыту, на одноядерной машине у вас нет шансов, если вы не будете делать много выходных данных. На многоядерном или многопроцессорном компьютере вы, вероятно, остановите его в конце концов, но для этого требуется время.

Смотрите также http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html

Добавлено: это хорошая практика, чтобы (1) сохранить снимок вашего рабочего пространства перед запуском ничего действительно долго и (2) в течение очень длительного расчета, написать некоторые из переменных в файл время от времени, чтобы вы могли возобновить вычисление, если оно было прервано (например, сбоем питания).

+1

Согласен, но иногда я убиваю его с помощью диспетчера задач Windows, а не с помощью bashc Ctrl-C, как обезумевшая обезьяна. –

+4

+1: Удар CTRL-C, как маньяк, обычно работает, но бывают ситуации, когда закрытие всего того, что работает. Что немного раздражает, если не сказать больше ... –

18

Насколько хорошо MATLAB отвечает CTRL-C, скорее зависит от того, что он делает. Например, если он находится в середине вызова BLAS или LAPACK, он не будет отвечать до тех пор, пока этот вызов не вернется. Если вы находитесь в блоке кода, где выполняется множество строк MATLAB, вы можете ожидать, что CTRL-C будет более отзывчивым.

1

вы можете найти процесс MATLAB в диспетчере задач Windows и установить приоритет как высокий или низкий, а другой - более низкий или более высокий приоритет. По моему опыту, это эффективный способ.

5

Другая стратегия для решения этой проблемы является введение очень короткую паузу где-то в расчетах (особенно в FOR или WHILE петли), как:

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

Это увеличивает вероятность того, что ваш маниакальный Ctrl -C'ing на самом деле остановит его.

-3

, если вы не будете остановить и повторно запустите затем убивать не плохо Choise Перейти к окнам задачи Manager-> Процессы затем оштрафовал MATLAB.exe и нажмите кнопку Завершить процесс

+11

OP сказал «* без * убийства MATLAB». – Jeroen

+0

>> «Я понял, что мне нужно остановиться и повторить» –

+1

Остановка и повторное воспроизведение ** не то же самое **, как убийство MATLAB. OP может захотеть сохранить некоторые переменные из рабочей области, которые были созданы до запуска сценария. Убийство MATLAB потеряет все, включая эти переменные. -1. – rayryeng

6

У меня очень простой трюк, чтобы сделать паузу (или прекратить) выполнение без ответа. Если мое моделирование работает длинный цикл я всегда делаю следующее:

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

А затем создать файл empty_script.m, содержащий следующее:

%keyboard 

Всякий раз, когда я хочу, чтобы приостановить исполнение я открыть внешний текст редактор и раскомментирует строку, в которой keyboard находится в empty_script.m. Это оставляет меня в режиме отладки, где я могу наблюдать за переменными, изменять материал или даже останавливать программу.

Смежные вопросы