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 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 *.