2013-08-19 27 views
5

Bir for döngüsünde matlab çağrısı yapan bir kabuk komut dosyasına sahibim.Matlab komut geçmişi zaman damgasından kaçının

for i in ${list}; do 
    nohup matlab -minimize -nodesktop -nosplash function_call(i, other_variables); 
done 

Şimdi ben döngü içinde FUNCTION_CALL yayınlanan her zaman için kısa zaman damgasını içerecek Komuta geçmişini matlab açarsanız. 10 farklı i yıllardan için döngü çalıştırdıktan sonra Örneğin, benim matlab komut geçmişi bu

%-- 08/19/2013 02:41:23 PM --% 
%-- 08/19/2013 02:53:11 PM --% 
%-- 08/19/2013 03:11:52 PM --% 
%-- 08/19/2013 03:12:58 PM --% 
%-- 08/19/2013 03:17:44 PM --% 
%-- 08/19/2013 03:24:51 PM --% 
%-- 08/19/2013 03:30:36 PM --% 
%-- 08/19/2013 03:35:33 PM --% 
%-- 08/19/2013 03:43:21 PM --% 
%-- 08/19/2013 04:04:31 PM --% 

gibi bu çok kullanışlı değildir ve Clutterlar benim komut geçmişi görünüyor. Komut geçmişimi, her zaman matlabın kabuk komutumdan başlatıldığı bir satır eklemekten kaçınmanın bir yolu var mı?

cevap

4

Sen MATLAB başladığında bu satırları kaldırmak için startup.m dosyasında bu komut koyabilirsiniz:

H.file = fullfile(prefdir, 'history.m'); 
copyfile(H.file, [H.file '.bak'], 'f'); 
H.log = fileread(H.file); 
H.handle = fopen(H.file, 'w'); 
H.stat = fwrite(H.handle, regexprep(H.log, '(%-- [^%]* --%(\n|\r)*)*', '')); 
H.stat = fclose(H.handle); 
clear H 

geçmiş tercih klasöründe prefdir bulunan ve history.m adlı içeren dosya. Geri kalanlar, dosya sonunda bu satırlarla eşleşen normal bir ifadedir. Komut dosyasındaki tüm değişkenleri clear H tarafından temizleyebilmem için bir yapıya koydum. H.stat =, ans değişkeninin oluşturulmasını önlemek için kullanılır.

+0

Maalesef,/usr/local/MATLAB/R2012a/toolbox/local/dizinine yazma iznim yok. Yazımdan history.m'ye yazmasını engellemek için kabuk betiğinden geçirebileceğim bir seçenek olmasını umuyordum. – ivan

+2

'startup.m'' toolbox \ local' içinde bulunmasına gerek yoktur. MATLAB başlangıç ​​klasörünüzde (MATLAB başladığında bulunduğunuz klasörde) bulunabilir. Ayrıca, bir kabuk komut dosyasından yaptığınız gibi MATLAB'i başlatırken, başlangıç ​​klasörünü doğrudan -sd 'seçeneği ile belirtebilirsiniz. Böylece, betiği bu klasördeki yanıttan yerleştirebilir ve MATLAB'ı kabuk komut dosyasından çalıştırdığınızda, ancak etkileşimli olarak değilken * yalnızca * çalıştırabilirsiniz. –