2010-03-08 12 views
34

我在MATLAB上運行了一個很長的模擬,我意識到我需要停下來並重新運行。但是,MATLAB真的進入了這種計算,並且它停止了響應。如何在不殺死MATLAB的情況下中斷運行?如何在MATLAB真的很忙時打斷MATLAB?

(我知道這是許多Windows程序的問題,但它確實急性與MATLAB。)

+1

Ctrl-C不起作用? – Dirk 2010-03-08 20:14:14

+2

Duplicate:http://stackoverflow.com/questions/1500314/how-to-abort-a-running-program-in-matlab – gnovice 2010-03-08 20:19:52

+1

不,這就是問題所在。 – 2010-03-08 20:27:41

回答

22

進入命令行窗口,然後按Ctrl-C很多。根據我的經驗,在單核機器上,你沒有機會,除非你做很多輸出。在多核或多處理器機器上,最終可能會阻止它,但這需要時間。

又見http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html

新增:這是一個很好的做法,(1)保存您的工作空間的快照很長的運行任何東西之前和(2)一個很長的計算之內,寫一些變量不時將文件複製到一個文件中,這樣,如果計算被中斷(例如由於電源故障),您可以恢復計算。

+1

我同意,但有時我會用Windows任務管理器而不是bashc Ctrl-C來殺死它,就像一隻瘋狂的猴子一樣。 – 2010-03-09 09:57:23

+4

+1:像瘋子一樣擊打CTRL-C通常是有效的,但在某些情況下關閉所有的東西都是可行的。這至少有點令人討厭... – 2010-03-10 10:00:26

18

MATLAB對CTRL-C的響應取決於它在做什麼。例如,如果它處於BLAS或LAPACK調用的中間,則在該調用返回之前它不會響應。如果您正在執行大量MATLAB代碼的代碼塊,您可以期待CTRL-C更具響應性。

1

您可以在Windows任務管理器中找到MATLAB進程,並將優先級設置爲高或低,並讓其他程序具有更低或更高的優先級。根據我的經驗,這是一種有效的方式。

5

處理這一問題的另一種策略是在計算地方引進一個非常短暫的停頓(特別是在for或while循環),如:

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

這增加了機會,你瘋狂的Ctrl鍵-Cing將實際上阻止它。

-3

如果你不會停下來,然後重新運行殺人是不壞的choise 轉到Windows任務管理器 - >進程則罰款MATLAB.exe,推動結束進程按鈕

+11

OP說「*沒有*殺死MATLAB」。 – Jeroen 2012-10-09 17:27:21

+0

>>'我意識到我需要停止並重新運行' – 2012-10-09 17:59:43

+1

停止和重新運行**與殺死MATLAB不一樣**。 OP可能希望保留運行腳本之前創建的工作空間中的一些變量。殺死MATLAB將失去一切,包括那些變量。 -1。 – rayryeng 2015-06-02 18:22:48

6

我有一個很簡單的一招暫停(或停止)無響應的執行。 如果我的模擬運行很長的循環,我總是做到以下幾點:

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

然後創建一個包含以下內容的文件empty_script.m

%keyboard 

每當我想暫停執行我打開外部文本編輯並取消註釋keyboardempty_script.m中的註釋。這使我處於調試模式,我可以觀察變量,修改內容甚至停止程序。