08.11.2014 Views

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

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!