2012-02-09 11 views
6

Jestem trochę zdezorientowany funkcją tic, ale nie jestem pewien, czy jest coś lepszego dla tego, co próbuję zrobić. W psuedo-Matlab:Przerwa w pętli po wyznaczonym czasie w Matlab

startTime = tic 

while(true) 

    #some_stochastic_process 

    if(now - startTime > RUNTIME) 
    break; 
    end 
end 

Ale kolejne wywołania Tic będzie sprać czas oryginalny. Czy istnieje sposób dostępu do aktualnej wartości tic bez nadpisywania go?

Odpowiedz

10

Funkcja NOW zwraca numer daty szeregowej (tj. Zakodowaną datę i godzinę). Należy zamiast być kojarzenie wywołanie TIC z wezwaniem do TOC wykonać stoper podobną rozrządu, tak:

timerID = tic; %# Start a clock and return the timer ID 

while true 

    %# Perform some process 

    if(toc(timerID) > RUNTIME) %# Get the elapsed time for the timer 
     break; 
    end 

end 

Alternatywnie, można uprościć pętlę tak:

while (toc(timerID) < RUNTIME) 

    %# Perform some process 

end 
+0

Ah - ja domyślam się, że byłem zmieszany o roli tic vs. toc. Dzięki! – chimeracoder