Aprenda Matlab 6.1 - Universidad Politécnica de Madrid
Aprenda Matlab 6.1 - Universidad Politécnica de Madrid
Aprenda Matlab 6.1 - Universidad Politécnica de Madrid
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Aprenda</strong> <strong>Matlab</strong> <strong>6.1</strong> como si estuviera en Primero página 20<br />
etime(t2, t1)<br />
tic ops toc<br />
operación y restando los valores <strong>de</strong>vueltos, se pue<strong>de</strong> saber el tiempo <strong>de</strong><br />
CPU empleado en esa operación. Este tiempo sigue corriendo aunque<br />
MATLAB esté inactivo.<br />
tiempo transcurrido entre los vectores t1 y t2 (¡atención al or<strong>de</strong>n!),<br />
obtenidos como respuesta al comando clock.<br />
imprime el tiempo en segundos requerido por ops. El comando tic pone el<br />
reloj a cero y toc obtiene el tiempo transcurrido.<br />
En las versiones anteriores a MATLAB 6.0 se disponía <strong>de</strong> funciones para <strong>de</strong>terminar el<br />
número <strong>de</strong> operaciones aritméticas realizadas:<br />
flops(0)<br />
flops<br />
inicializaba a cero el contador <strong>de</strong> número <strong>de</strong> operaciones aritméticas <strong>de</strong><br />
punto flotante (flops)<br />
<strong>de</strong>volvía el número <strong>de</strong> flops realizados hasta ese momento<br />
A partir <strong>de</strong> la versión 6.0 estas funciones ya no están disponibles. La razón aducida en la<br />
documentación <strong>de</strong> MATLAB es doble: Por una parte, en muchos casos es muy difícil estimar el<br />
número <strong>de</strong> operaciones aritméticas realizadas (por ejemplo, en cálculo con matrices sparse), y por<br />
otra, en los computadores mo<strong>de</strong>rnos el número <strong>de</strong> operaciones aritméticas no es más importante que<br />
la gestión <strong>de</strong> la memoria, u otros diversos factores. Por otra parte, conviene recordar que la función<br />
flops "estimaba" y no "contaba" el número <strong>de</strong> operaciones aritméticas, puesto que contarlas <strong>de</strong><br />
modo exacto hubiera tenido un coste prohibitivo.<br />
A modo <strong>de</strong> ejemplo, el siguiente código mi<strong>de</strong> <strong>de</strong> varias formas el tiempo necesario para<br />
resolver un sistema <strong>de</strong> 500 ecuaciones con 500 incógnitas. Téngase en cuenta que los tiempos<br />
pequeños (<strong>de</strong>l or<strong>de</strong>n <strong>de</strong> las décimas o centésimas <strong>de</strong> segundo), no se pue<strong>de</strong>n medir con gran<br />
precisión.<br />
>> A=rand(500); b=rand(100,1); x=zeros(500,1);<br />
>> tiempo=clock; x=A\b; tiempo=etime(clock, tiempo)<br />
>> time=cputime; x=A\b; time=cputime-time<br />
>> tic; x=A\b; toc<br />
don<strong>de</strong> se han puesto varias sentencias en la misma línea para que se ejecuten todas sin tiempos<br />
muertos al pulsar intro. Esto es especialmente importante en la línea <strong>de</strong> comandos en la que se<br />
quiere medir los tiempos. Todas las sentencias <strong>de</strong> cálculos matriciales van seguidas <strong>de</strong> punto y<br />
coma (;) con objeto <strong>de</strong> evitar la impresión <strong>de</strong> resultados.