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 88<br />

Finalmente, la función evalin(ws, 'expresion') evalúa 'expresion' en el espacio <strong>de</strong> trabajo ws.<br />

Los dos posibles valores para ws son 'caller' y 'base', que indican el espacio <strong>de</strong> trabajo <strong>de</strong> la<br />

función que llama a evalin o el espacio <strong>de</strong> trabajo base. Los valores <strong>de</strong> retorno se pue<strong>de</strong>n recoger<br />

<strong>de</strong>l modo habitual.<br />

<strong>6.1</strong>0. Distribución <strong>de</strong>l esfuerzo <strong>de</strong> cálculo: Profiler<br />

El profiler es una utilidad que permite saber qué tiempo <strong>de</strong> cálculo se ha gastado en cada línea <strong>de</strong><br />

una función <strong>de</strong>finida en un fichero *.m o en general <strong>de</strong> un programa <strong>de</strong> MATLAB (A partir <strong>de</strong> la<br />

versión 6 <strong>de</strong> MATLAB, el profiler también pue<strong>de</strong> utilizarse con ficheros <strong>de</strong> comandos *.m, es<br />

<strong>de</strong>cir con programas que no sean funciones. Permite asimismo <strong>de</strong>terminar el número <strong>de</strong> llamadas a<br />

dicha función, las funciones que la han llamado (parent functions), las funciones llamadas por ella<br />

(child functions), etc.<br />

El profiler mejora la calidad <strong>de</strong> los programas, pues permite <strong>de</strong>tectar los “cuellos <strong>de</strong> botella”<br />

<strong>de</strong> una aplicación y concentrar en ellos los esfuerzos para mejorar su eficiencia. Por ejemplo,<br />

sabiendo el número <strong>de</strong> veces que se llama a una función y el tiempo que cuesta cada llamada, se<br />

pue<strong>de</strong> <strong>de</strong>cidir si es mejor emplear más memoria en guardar resultados intermedios para no tener que<br />

calcular varias veces lo mismo.<br />

El profiler ha sido <strong>de</strong> nuevo mejorado en la versión 6 <strong>de</strong> MATLAB. Se pue<strong>de</strong> medir el tiempo<br />

(en centésimas <strong>de</strong> segundo) empleado en cada línea <strong>de</strong>l fichero, en cada llamada a una función e<br />

incluso en cada operador <strong>de</strong>l lenguaje. Una forma <strong>de</strong> llamar al profiler podría ser la siguiente (se<br />

supone que estas líneas forman parte <strong>de</strong> un fichero *.m):<br />

profile on -<strong>de</strong>tail operator;<br />

[T, Y] = o<strong>de</strong>113('RTDyn2m', tspan, y0, myOptions);<br />

profile report;<br />

don<strong>de</strong> con la primera línea se activa el profiler a la vez que se <strong>de</strong>fine el grado <strong>de</strong> <strong>de</strong>talle que se<br />

<strong>de</strong>sea. La segunda línea es una llamada a la función o<strong>de</strong>113 que a su vez llama a muchas otras<br />

funciones y la tercera línea <strong>de</strong>tiene el profiler y le pi<strong>de</strong> que genere un informe en HTML con los<br />

resultados calculados. La Figura 29 muestra el aspecto <strong>de</strong> la página principal <strong>de</strong>l informe, con<br />

información sobre todas las funciones y operadores; la Figura 30 muestra el <strong>de</strong>talle <strong>de</strong>l informa<br />

sobre una función particular.<br />

Existen tres posibles grados <strong>de</strong> <strong>de</strong>talle respecto a la información que se le pi<strong>de</strong> al profiler:<br />

mmex<br />

builtin<br />

operator<br />

<strong>de</strong>termina el tiempo utilizado por funciones y sub-funciones <strong>de</strong>finidas en<br />

ficheros *.m y *.mex. Ésta es la opción por <strong>de</strong>fecto.<br />

como el anterior pero incluyendo las funciones intrínsecas <strong>de</strong><br />

MATLAB.<br />

como builtin pero incluyendo también el tiempo empleado por los operadores<br />

tales como la suma + y el producto *.

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

Saved successfully!

Ooh no, something went wrong!