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

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.

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

Saved successfully!

Ooh no, something went wrong!