2011-02-02 31 views
20

Ho un programma che esegue un ciclo Desidero avere due contatori di tempo, uno per il ciclo, che indicheranno come il registro ha eseguito l'iterazione del ciclo e uno per l'intero programma. Per quanto a mia conoscenza, tic e toc funzioneranno solo una volta.Diversi contatori di tempo in MATLAB

risposta

29

Sei solo familiarità con questa sintassi tic toc:

tic; someCode; elapsed = toc; 

Ma c'è un'altra sintassi:

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

La seconda sintassi fa lo stesso misurazione del tempo, ma consente di eseguire contemporaneamente più timer di cronometro. Assegnare l'output di tic a una variabile tStart e quindi utilizzare la stessa variabile quando si chiama toc. MATLAB misura il tempo trascorso tra il tic e il relativo comando toc e visualizza il tempo trascorso in secondi. Questa sintassi consente di eseguire più operazioni simultanee, inclusi i tempi delle operazioni nidificate (matlab documentation of tic toc).

Ecco come utilizzarlo nel tuo caso. Diciamo che questo è il tuo codice:

for i = 1:M 
    someCode; 
end 

Inserire il tic e toc in questo modo:

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

È inoltre possibile utilizzare la sintassi di cui sopra per creare un vettore per il quale l'elemento esima è la misura del tempo per l'iperazione it. Come questo:

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

È possibile utilizzare tic e toc alle operazioni di tempo annidati, dal aiuto Matlab per tic:

tStart=tic; any_statements; toc(tStart); fa la stessa misurazione del tempo, ma si consente la possibilità di eseguire più di un cronometro in concomitanza. Assegnare l'output di tic a una variabile tStart e quindi utilizzare la stessa variabile quando si chiama toc. MATLAB misura il tempo trascorso tra il tic e il relativo comando toc e visualizza il tempo trascorso in secondi. Questa sintassi permette di tempo più operazioni simultanee, tra cui la tempistica delle operazioni nidificate

1

io non sono in grado di provare questo in questo momento, ma si dovrebbe essere in grado di utilizzare più tic e toc dichiarazioni se si memorizzano i valori tic in variabili.

Leggi Matlab's documentation su questo, c'è anche una sezione su annidarli. Ecco un esempio di massima:

tStartOverall = tic; 

... 

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

... 

tEndOverall = toc(tStartOverall); 
Problemi correlati