Подтвердить что ты не робот

Как я могу прервать MATLAB, когда он действительно занят?

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

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

%keyboard

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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