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.

Capítulo 6: Programación <strong>de</strong> MATLAB página 67<br />

correctamente hace falta que ese directorio esté en el search path <strong>de</strong> MATLAB o que sea el<br />

directorio actual.<br />

6.3.7. SUB-FUNCIONES<br />

Tradicionalmente MATLAB obligaba a crear un fichero *.m diferente por cada función. El nombre<br />

<strong>de</strong> la función <strong>de</strong>bía coincidir con el nombre <strong>de</strong>l fichero. A partir <strong>de</strong> la versión 5.0 se introdujeron las<br />

sub-funciones, que son funciones adicionales <strong>de</strong>finidas en un mismo fichero *.m, con nombres<br />

diferentes <strong>de</strong>l nombre <strong>de</strong>l fichero (y <strong>de</strong>l nombre <strong>de</strong> la función principal) y que las sub-funciones<br />

sólo pue<strong>de</strong>n ser llamadas por las funciones contenidas en ese fichero, resultando “invisibles” para<br />

otras funciones externas.<br />

A continuación se muestra un ejemplo contenido en un fichero llamado mi_fun.m:<br />

function y=mi_fun(a,b)<br />

y=subfun1(a,b);<br />

function x=subfun1(y,z)<br />

x=subfun2(y,z);<br />

function x=subfun2(y,z)<br />

x=y+z+2;<br />

6.3.8. FUNCIONES PRIVADAS<br />

Las funciones privadas (private) son funciones que no se pue<strong>de</strong>n llamar <strong>de</strong>s<strong>de</strong> cualquier otra<br />

función, aunque se encuentren en el path o en el directorio actual. Sólo ciertas funciones están<br />

autorizadas a utilizarlas. Las funciones privadas se <strong>de</strong>finen en sub-directorios que se llaman private<br />

y sólo pue<strong>de</strong>n ser llamadas por funciones <strong>de</strong>finidas en el directorio padre <strong>de</strong>l sub-directorio private.<br />

En la búsqueda <strong>de</strong> nombres que hace MATLAB cuando encuentra un nombre en una<br />

expresión, las funciones privadas se buscan inmediatamente <strong>de</strong>spués <strong>de</strong> las sub-funciones, y antes<br />

que las funciones <strong>de</strong> tipo general.<br />

6.3.9. FUNCIONES *.P<br />

Las funciones *.p son funciones *.m pre-compiladas con la función pco<strong>de</strong>. Por <strong>de</strong>fecto el resultado<br />

<strong>de</strong>l comando pco<strong>de</strong> func.m es un fichero func.p en el directorio actual (el fichero func.m pue<strong>de</strong><br />

estar en cualquier directorio <strong>de</strong>l search path). El comando pco<strong>de</strong> -inplace func.m crea el fichero<br />

func.p en el mismo directorio don<strong>de</strong> encuentra el fichero func.m. Pue<strong>de</strong>n pasarse varios ficheros<br />

*.m al comando pco<strong>de</strong> <strong>de</strong> una sola vez.<br />

Los ficheros *.p se ejecutan algo más rápidamente que los *.m y permiten ocultar el código <strong>de</strong><br />

los ficheros ASCII correspondientes a las funciones *.m <strong>de</strong> MATLAB.<br />

6.3.10. VARIABLES PERSISTENTES<br />

Las variables persistentes son variables locales <strong>de</strong> las funciones (pertenecen al espacio <strong>de</strong> trabajo<br />

<strong>de</strong> la función y sólo son visibles en dicho espacio <strong>de</strong> trabajo), que conservan su valor entre distintas<br />

llamadas a la función. Por <strong>de</strong>fecto, las variables locales <strong>de</strong> una función se crean y <strong>de</strong>struyen cada<br />

vez que se ejecuta la función. Las variables persistentes se pue<strong>de</strong>n <strong>de</strong>finir en funciones, pero no en<br />

ficheros <strong>de</strong> comandos. Es habitual utilizar para ellas letras mayúsculas. Las variables se <strong>de</strong>claran<br />

como persistentes utilizando la palabra persistent seguida <strong>de</strong> los nombres separados por blancos,<br />

como por ejemplo:

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

Saved successfully!

Ooh no, something went wrong!