Estamos acostumbrados a trabajar con funciones del tipo y=f(x) donde f(x)
es una expresin matemtica en trminos de la variable x. Se calcula un
valor de y (salida) cuando se proporciona un valor de x (entrada) en la
expresin. MATLAB define muchas funciones como sin(x), sqrt(x), etc.
Podemos definir nuestras propias funciones guardarlas en un fichero y
usarlas de un modo semejante a las funciones predefinidas. En muchos
casos las funciones son los componentes bsicos dentro de un programa de
ordenador. Habitualmente, un programa se subdivide en tareas y cada una
de ellas es llevada a cabo por una funcin, a esta forma de resolver los
problemas se denomina programacin estructurada.
La principal ventaja de las funciones es la posibilidad de reutilizar el
cdigo en otros programas distintos al cual fueron definidas.
La entrada y la salida puede ser una o varias variables, cada una de ellas
puede ser un escalar, un vector o una matriz de cualquier tamao.
function variables_salida=nombre_funcion(variables_entrada)
sentencias
end
Una funcin se llama del mismo modo que las funciones predefinidas. Las
funciones se pueden llamar desde la ventana de comandos, desde un fichero
script o desde otra funcin.
Todas las variables en una funcin son locales a dicha funcin, incluyendo
las de entrada y las de salida.
Vamos a ver unos cuantos ejemplos en esta pgina de funciones.
Ejemplos
Suma de dos nmeros
Empezaremos por una funcin suma que realiza la siguiente tarea, suma de
dos nmeros x e y y devuelve la sumaz=x+y
Definicin de la funcin
function [z] = suma (x,y)
%Esta funcin suma dos nmeros x e y
%y devuelve el resultado de la suma en z
end
Llamada a la funcin
La llamada a la funcin se puede hacer desde la ventana de comandos
>> suma(2,3)
ans =
5
Sistema de ayuda
En la ventana de comandos escribimos
>> help suma
Esta funcin suma dos nmeros x e y
y devuelve el resultado de la suma en z
1.
2.
3.
4.
Definimos la funcin:
o
El operador asignacin =
end
x=200+40*t-5*t.^2;
200
-40
100
-60
Vamos a crear una funcin que nos permita comprobar las propiedades de
las races de una ecuacin de segundo grado, y dos subfunciones, la
primera calcula la raz x1 y la segunda la raz x2.
En el editor de funciones creamos la funcin comprobar_raices, a la que se
le pasa los coeficientes a, b y c de la ecuacin de segundo grado y devuelve
los cocientes -b/a y c/a de la suma y producto de las dos races x1 y x2.
Guardamos el cdigo de la funcin primaria comprobar_raices y de las
subfunciones calcula_raiz1 ycalcula_raiz2 en el fichero
comprobar_raices.m
function [r1,r2]=comprobar_raices(a,b,c)
x1=calcula_raiz1(a,b,c);
x2=calcula_raiz2(a,b,c);
r1=x1+x2;
r2=x1*x2;
end
function raiz=calcula_raiz1(a,b,c)
raiz=(-b+sqrt(b*b-4*a*c))/(2*a);
end
function raiz = calcula_raiz2(a,b,c)
raiz=(-b-sqrt(b*b-4*a*c))/(2*a);
end
b_a = 1
c_a = -6
Funciones anidadas
Una funcin anidada es una funcin definida dentro de otra funcin. Las
funcin primaria y las anidadas deben obligatoriamente terminar con end
Las funciones anidadas tiene acceso a las variables de la funcin primaria y
la funcin primaria tiene acceso a las variables definidas por la funcin
anidada.
Una funcin anidada puede contener otra y as sucesivamente, pero este
proceso puede llevar a confusin. Existen reglas para llamar a una funcin
anidada dentro de otra pero no tiene por el momento inters para el lector.
En el editor de funciones creamos la funcin comprobar_raices1, a la que
se le pasa los coeficientes a, b y c de la ecuacin de segundo grado y
devuelve los cocientes -b/a y c/a de la suma y producto de las dos
races x1 y x2. Guardamos el cdigo de la funcin
primaria comprobar_raices1 y de las subfunciones calcula_raiz1
ycalcula_raiz2 en el fichero comprobar_raices1.m
function [r1,r2]=comprobar_raices1(a,b,c)
dis=sqrt(b*b-4*a*c);
calcula_raiz1;
calcula_raiz2;
r1=x1+x2;
r2=x1*x2;
function calcula_raiz1
x1=(-b+dis)/(2*a);
end
function calcula_raiz2
x1=(-b-dis)/(2*a);
end
end
>> [b_a,c_a]=comprobar_raices(1,-1,-6)
b_a = 1
c_a = -6
Funciones annimas
Las funciones annimas nos permiten definir una funcin simple sin
necesidad de crearla y guardarla en un fichero .m. Se pueden definir en la
ventana de comandos, en un fichero script o dentro de otra funcin, con la
siguiente sintaxis:
variable=@(lista_argumentos) expresion
expresion consiste en una nica y vlida expresin, puede tener una o ms
variables de entrada que se especifican en la lista de argumentos separadas
por comas. Puede incluir variables que se han definido previamente
Las funciones se pueden asignar a variables y estas variables se pueden
pasar a otras funciones como se pasan escalares o vectores. Ms adelante
veremos cmo se llama a una funcin dentro de otra funcin que se le pasa
en uno de sus parmetros.
Comparamos la definicin de una funcin func que se guarda en un fichero
func.m y su equivalente annima
function y=func(x)
y=cos(x)-x;
end
Llamada a la funcin
>> z=func(0.5)
z = 0.3776
La funcin fplot
La funcin fplot dibuja una grfica si se le pasa la funcin f en el primer
parmetro y el intervalo [xmin, xmax] en el segundo
>> f=@(x) x-5*(1-exp(-x));
>> fplot(f,[0 6]);
Alternativamente, fplot devuelve una tabla de valores [x, y] que pueden ser
utilizadas por la funcin plot(x,y) para dibujar grfica, superponer una
rejilla (grid), poner ttulo (title) y etiquetas (xlabel, ylabel), etc. tal como se
muestra en el siguiente script
f=@(x) x-5*(1-exp(-x));
[x,y]=fplot(f,[0 6]);
plot(x,y)
grid on
xlabel('x')
ylabel('y')
title('grfica de una funcin')
Obtenemos una figura con mejor resolucin sin tener que probar distintos
valores de x o del nmero de puntos.