2011-02-02 40 views
20

Bir döngüyü çalıştıran bir programım var. Döngü için bir tane olmak üzere iki zaman sayacına sahip olmak istiyorum; bu, log'un bir döngü yinelemesinin nasıl yapıldığını ve tüm program için bir tane olduğunu söyleyecektir. Bilgilerimin en iyisine tic ve toc sadece bir kez çalışacaktır.Birkaç zaman sayacı MATLAB

cevap

29

Bu tik toc sözdizimi ile sadece tanıdık: Burada kaba bir örnektir

tic; someCode; elapsed = toc; 

Ama başka bir sözdizimi vardır:

start = tic; someCode; elapsed = toc(start); 

ikinci sözdizimi aynı yapar zaman ölçümü, ancak aynı anda birden fazla kronometre zamanlayıcısı çalıştırma seçeneği sunar. Bir tStart değişkenine tik çıkışını atar ve daha sonra toc çağırırken aynı değişkeni kullanırsınız. MATLAB, tik ile ilgili toc komutu arasında geçen süreyi ölçer ve saniye cinsinden geçen zamanı görüntüler. Bu sözdizimi, iç içe geçmiş işlemlerin zamanlaması dahil olmak üzere birden çok eşzamanlı işlemi zamanlamanızı sağlar (matlab documentation of tic toc).

Durumunuzda bunu nasıl kullanacağınız aşağıda açıklanmıştır. Böyle

for i = 1:M 
    someCode; 
end 

takın tic ve toc:

startLoop = tic; 
for i = 1:N 
    startIteration = tic; 
    someCode; 
    endIteration = toc(startIteration); 
end 
endLoop = toc(startLoop); 

Ayrıca i'inci eleman zaman ölçümü olduğu bir vektör oluşturmak için yukarıdaki sözdizimini kullanabilirsiniz en bu kod olduğunu varsayalım ith iterasyon için. Bunun gibi:

startLoop = tic; 
for i = 1:N 
    startIteration(i) = tic; 
    someCode; 
    endIteration(i) = toc(startIteration(i)); 
end 
endLoop = toc(startLoop); 
2

Sen tic için Matlab yardımıyla gelen, zaman iç içe operasyonlara tik ve toc kullanabilirsiniz:

tStart=tic; any_statements; toc(tStart); aynı zaman ölçümünü yapar, ama size aynı anda birden fazla kronometre zamanlayıcı çalıştırma seçeneğini sağlar. Bir tStart değişkenine tik çıkışını atar ve daha sonra toc çağırırken aynı değişkeni kullanırsınız. MATLAB, tik ile ilgili toc komutu arasında geçen süreyi ölçer ve saniye cinsinden geçen zamanı görüntüler. Bu sözdizimi zaman

1

bunu şimdi denemek mümkün değilim iç içe operasyonların zamanlaması dahil olmak üzere birden eşzamanlı operasyonlar, sağlar, ancak içine tic değerlerini saklamak eğer birden tic ve toc ifadeleri kullanmak mümkün olmalıdır değişkenler.

Bu konuda Matlab's documentation'u okuyun, bunları yerleştirmek için bir bölüm bile vardır.

tStartOverall = tic; 

... 

tStartLoop = tic; 
<your loop code here> 
tEndLoop = toc(tStartLoop); 

... 

tEndOverall = toc(tStartOverall);