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
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Aprenda</strong> <strong>Matlab</strong> <strong>6.1</strong> como si estuviera en Primero página 64<br />
Mención especial merece el fichero <strong>de</strong> comandos startup.m (ver Apartado 2.6). Este fichero<br />
se ejecuta cada vez que se entra en MATLAB. En él pue<strong>de</strong> introducir todos aquellos comandos que<br />
le interesa se ejecuten siempre al iniciar la sesión, por ejemplo format compact y los comandos<br />
necesarios para modificar el path.<br />
6.3.2. DEFINICIÓN DE FUNCIONES<br />
La primera línea <strong>de</strong> un fichero llamado name.m que <strong>de</strong>fine una función tiene la forma:<br />
function [lista <strong>de</strong> valores <strong>de</strong> retorno] = name(lista <strong>de</strong> argumentos)<br />
don<strong>de</strong> name es el nombre <strong>de</strong> la función. Entre corchetes y separados por comas van los valores <strong>de</strong><br />
retorno (siempre que haya más <strong>de</strong> uno), y entre paréntesis también separados por comas los<br />
argumentos. Pue<strong>de</strong> haber funciones sin valor <strong>de</strong> retorno y también sin argumentos. Recuér<strong>de</strong>se que<br />
los argumentos son los datos <strong>de</strong> la función y los valores <strong>de</strong> retorno sus resultados. Si no hay<br />
valores <strong>de</strong> retorno se omiten los corchetes y el signo igual (=); si sólo hay un valor <strong>de</strong> retorno no<br />
hace falta poner corchetes. Tampoco hace falta poner paréntesis si no hay argumentos.<br />
Una diferencia importante con C/C++/Java es que en MATLAB una función no modifica<br />
nunca los argumentos que recibe. Los resultados <strong>de</strong> una función <strong>de</strong> MATLAB se obtienen siempre a<br />
través <strong>de</strong> los valores <strong>de</strong> retorno, que pue<strong>de</strong>n ser múltiples y matriciales. Tanto el número <strong>de</strong><br />
argumentos como el <strong>de</strong> valores <strong>de</strong> retorno no tienen que ser fijos, <strong>de</strong>pendiendo <strong>de</strong> cómo el usuario<br />
llama a la función 14 .<br />
Las variables <strong>de</strong>finidas <strong>de</strong>ntro <strong>de</strong> una función son variables locales, en el sentido <strong>de</strong> que son<br />
inaccesibles <strong>de</strong>s<strong>de</strong> otras partes <strong>de</strong>l programa y en el <strong>de</strong> que no interfieren con variables <strong>de</strong>l mismo<br />
nombre <strong>de</strong>finidas en otras funciones o partes <strong>de</strong>l programa. Se pue<strong>de</strong> <strong>de</strong>cir que pertenecen al propio<br />
espacio <strong>de</strong> trabajo <strong>de</strong> la función y no son vistas <strong>de</strong>s<strong>de</strong> otros espacios <strong>de</strong> trabajo. Para que la función<br />
tenga acceso a variables que no han sido pasadas como argumentos es necesario <strong>de</strong>clarar dichas<br />
variables como variables globales, tanto en el programa principal como en las distintas funciones<br />
que <strong>de</strong>ben acce<strong>de</strong>r a su valor. Es frecuente utilizar el convenio <strong>de</strong> usar para las variables globales<br />
nombres largos (más <strong>de</strong> 5 letras) y con mayúsculas.<br />
Por razones <strong>de</strong> eficiencia, los argumentos que recibe una función <strong>de</strong> MATLAB no se copian a<br />
variables locales si no son modificados por dicha función (en términos <strong>de</strong> C/C++ se diría que se<br />
pasan por referencia). Esto tiene importantes consecuencias en términos <strong>de</strong> eficiencia y ahorro <strong>de</strong><br />
tiempo <strong>de</strong> cálculo. Sin embargo, si <strong>de</strong>ntro <strong>de</strong> la función se realizan modificaciones sobre los<br />
argumentos recibidos, antes se sacan copias <strong>de</strong> dichos argumentos a variables locales y se<br />
modifican las copias (diríase que en este caso los argumentos se pasan por valor).<br />
Dentro <strong>de</strong> la función, los valores <strong>de</strong> retorno <strong>de</strong>ben ser calculados en algún momento (no hay<br />
sentencia return, como en C/C++/Java). De todas formas, no hace falta calcular siempre todos los<br />
posibles valores <strong>de</strong> retorno <strong>de</strong> la función, sino sólo los que el usuario espera obtener en la sentencia<br />
<strong>de</strong> llamada a la función. En cualquier función existen dos variables <strong>de</strong>finidas <strong>de</strong> modo automático,<br />
llamadas nargin y nargout, que representan respectivamente el número <strong>de</strong> argumentos y el número<br />
<strong>de</strong> valores <strong>de</strong> retorno con los que la función ha sido llamada. Dentro <strong>de</strong> la función, estas variables<br />
pue<strong>de</strong>n ser utilizadas como el programador <strong>de</strong>see.<br />
14<br />
Es un concepto distinto <strong>de</strong>l <strong>de</strong> funciones sobrecargadas (funciones distintas con el mismo nombre y distintos<br />
argumentos), utilizadas en C/C++/Java. En MATLAB una misma función pue<strong>de</strong> ser llamada con más o menos<br />
argumentos y valores <strong>de</strong> retorno. También en C/C++ es posible tener un número variable <strong>de</strong> argumentos, aunque no<br />
<strong>de</strong> valores <strong>de</strong> retorno.