Matlab® es un lenguaje muy utilizado en ingeniería, ya que permite hacer de forma más o menos sencilla cálculos matemáticos muy complejos, y a veces necesitamos procesar gran cantidad de datos y llega a ser desesperante ver cómo tarda sin tener tan siquiera una ligera idea de cuánto queda.
El principio del código que voy a postear se basa en dos funciones: tic y toc. La primera de ellas marca el inicio de la cuenta de tiempo, y la segunda el final, indicándonos los segundos transcurridos entre tic y toc. Podemos por ejemplo hacer esto:
Y nos devolverá los segundos en total que ha tardado.
Pero vamos a ir algo más allá. Imaginemos que tenemos una tarea iterativa de N iteraciones, queremos que cada N/20 iteraciones nos diga más o menos lo que queda (en cada iteración sería mucho, porque estaría todo el rato diciendo el tiempo, y además gastando tiempo en ello; por lo que tendríamos que esperar mucho más de lo necesario).
Éste es el código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | N=2000; aviso=100; tic % Inicia el contador de tiempo for n=0:N % Calculamos el progreso total y los tiempos estimado y restante if (mod(n, aviso)==0) progreso=n/N; % Progreso (Entre 0 y 1) transcurrido=toc; % Tiempo transcurrido estimado=transcurrido/progreso; % Estimamos el tiempo total queda = estimado-transcurrido; % Tiempo restante % Lo mostramos todo en pantalla disp(sprintf('Progreso %2.2f%%. Tiempo Transcurrido: %ds. Tiempo estimado: %ds. Tiempo restante %ds.', progreso*100, round(transcurrido), round(estimado), round(queda))); end % Esto se supone que es una tarea que tarda mucho tiempo pause(0.01); end disp('Completado!'); |
Pingback: Bitacoras.com /
GENIAL! muchísimas gracias, justo lo que necesitaba
crack
Gracias a ti miguek, por pasarte por aquí 🙂