2010-03-08 21 views
34

MATLAB'da uzun bir simülasyon yapıyorum ve durup tekrar çalıştırmam gerektiğini anladım. Ancak, MATLAB bu hesaplamaya gerçekten giriyor ve yanıt vermiyor. MATLAB'ı öldürmeden bu koşuyu nasıl kesebilirim?Gerçekten çok meşgul olduğunda MATLAB'u nasıl kesebilirim?

(Bu birçok Windows programı ile ilgili bir sorun olduğunu farkındayım ama MATLAB ile gerçekten akut bu.) Komutu penceresine

+1

Ctrl-C çalışmıyor mu? – Dirk

+2

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

+1

Hayır, sorun bu. –

cevap

22

Git ve Ctrl-C a çok çarptı. Deneyimlerimden, tek çekirdekli bir makinede, çok fazla çıktı almadığınız sürece, şansınız yoktur. Çok çekirdekli veya çok işlemcili bir makinede, büyük olasılıkla bunu durduracaksınız, ancak zaman alacak.

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

Eklendi bakınız: o (1) gerçekten uzun bir şey çalıştırmadan önce çalışma anlık kaydetmek ve (2) çok uzun bir hesaplama içinde, değişkenlerin bazılarını yazmak için iyi bir uygulamadır zaman zaman bir dosyaya, böylelikle kesintiye uğradığında hesaplamayı devam ettirebilirsiniz (örn. elektrik kesintisi nedeniyle).

+1

Katılıyorum, ancak bazen, Windows Görev Yöneticisi ile bashc Ctrl-C yerine bir demanslı maymun gibi öldürüyorum. –

+4

+1: Bir mani gibi CTRL-C'ye vurmak genellikle işe yarıyor, ancak her şeyin kapatılmasında her şeyin işe yaradığı durumlar var. En az söylemek için biraz can sıkıcı olan ... –

18

MATLAB, CTRL-C'ye ne kadar iyi yanıt verir, ne yaptığına bağlıdır. Örneğin bir BLAS veya LAPACK çağrısının ortasındaysa, bu çağrı geri gelene kadar yanıt vermez. Çok sayıda MATLAB satırının yürütüldüğü bir kod bloğundaysanız, CTRL-C'nin daha duyarlı olmasını bekleyebilirsiniz.

1

MATLAB işlemini windows görev yöneticisinde bulabilir ve önceliği yüksek veya düşük olarak ayarlayabilir ve diğer programların daha düşük veya daha yüksek önceliğe sahip olmasını sağlayabilirsiniz. Benim tecrübemde, verimli bir yoldur.

5
bu sorunla başa çıkmak için başka strateji olduğu gibi (döngü İÇİN veya WHILE özellikle de) hesaplanmasında yere çok kısa bir duraklama tanıtmaktır

:

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

Bu ihtimalini artıracağını senin manyakça Ctrl -C'ing aslında durduracak.

-3

durdurup sonra öldürme yeniden çalıştırın görev yöneticisinin birlikte> Süreçler sonra MATLAB.exe ceza Git pencerelere kötü bir seçimi ve Bitiş Süreci düğmeye basmak için alışkanlık eğer

+11

OP "* olmadan MATLAB öldürme" dedi. – Jeroen

+0

>> 'Durup yeniden çalıştırmam gerektiğini anladım' –

+1

Durdurma ve tekrar çalıştırma ** MATLAB'ı öldürmekle aynı değil **. OP, senaryoyu çalıştırmadan önce oluşturulan çalışma alanından bazı değişkenleri korumak isteyebilir. Öldürme MATLAB, bu değişkenler de dahil olmak üzere her şeyi kaybedecektir. -1. – rayryeng

6

bir duraksardım çok basit hile var yanıt vermeyen bir yürütme (veya durdurma). benim simülasyon uzun bir döngü çalışıyorsa hep aşağıdakileri yapın:

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

Ve sonra aşağıdaki içeren bir dosya empty_script.m oluşturun: Ben yürütmeye ara istediğinizde

%keyboard 

Ben harici bir metin açmak editör ve uncomment empty_script.m içinde söyleyerek satır. Bu, değişkenleri izleyebildiğim, değiştirebileceğim veya programı durdurabildiğim hata ayıklama modunda kalıyor.

İlgili konular