En matlab, la definición de funciones se realiza mediante la instrucción function
, que termina con la palabra end
.
function mifuncion()
%Esta es la documentación (docstring) de la función
a = 2+2;
%Este es un comentario, y la siguiente línea es un comando
% que se ejecutará cuando llamemos a la función
% como no termina en punto y coma, se verá el resultado por pantalla
"Hola Mundo"
end
La función debe estar en un archivo de igual nombre que el de la función (mifuncion.m
).
Una función no es ejecutada hasta que la llamamos. Para llamar a una función, simplemente escribimos su nombre seguido de paréntesis englobando los argumentos, o únicamente paréntesis ()
si la función no necesita argumentos:
mifuncion()
function mifuncion()
%Esta es la documentación (docstring) de la función
a = 2+2;
%Este es un comentario, y la siguiente línea es un comando
% que se ejecutará cuando llamemos a la función
% como no termina en punto y coma, se verá el resultado por pantalla
"Hola Mundo"
end
mi_funcion()
Cuando una función devuelve algún objeto éste puede ser asignados a una variable:
function a = mi_numero()
%Esta es la documentación (docstring) de la función
a = 2+2;
end
y en la terminal de comandos, o dentro de un script o función, podemos llamar
x = mi_numero();
#Pruébalo
Escribe una función que devuelva siempre 1. Llama a la función, almacena el resultado en una variable, y súmalo a otra variable.
4.1.1. Sobre los parámetros
Un parámetro es un valor que la función espera recibir cuando sea llamada (invocada), a fin de ejecutar acciones en base al mismo. Una función puede esperar uno o más parámetros (que irán separados por una coma) o ninguno.
function saludador(nombre, apellido)
%Función que al llamarla escribe el nombre completo por pantalla.
% algoritmo
end
Los parámetros, se indican entre los paréntesis, a modo de variables, a fin de poder utilizarlos como tales, dentro de la misma función.
Los parámetros que una función espera, serán utilizados por ésta, dentro de su algoritmo, a modo de variables de ámbito local, a las que solo la función podrá acceder:
function saludador(nombre, apellido)
%Función que al llamarla escribe el nombre completo por pantalla.
% algoritmo
nombre_completo = [nombre, apellido]
end
Si quisiéramos acceder a esas variables locales, fuera de la función, obtendríamos un error:
function saludador(nombre, apellido)
%Función que al llamarla escribe el nombre completo por pantalla.
% algoritmo
nombre_completo = [nombre, apellido]
end
saludador('Jaimito', 'Pérez');
nombre_completo
Obtenemos el error (aprox):
error: 'nombre_completo' undefined near line 1 column 1
%Pruébalo
1- Escribe una función que recibe como argumento un número positivo N y devuelve $N^2$.
2- Escribe una función que recibe como argumento un número positivo N y devuelve la suma de $n^2$ desde n=1 hasta N.
3- Escribe una función que recibe como argumento un número positivo N y devuelve un array con todos los $n^2$, desde n=1 hasta N.
Una función, puede tener cualquier tipo de algoritmo y cualquier cantidad de ellos y, utilizar cualquiera de las características vistas hasta ahora. No obstante, una buena práctica es que una función realice una única acción, pero que sea tan genérica como sea posible (una sóla función que suma números es mejor que dos funciones, una para sumar números positivos y otra para sumar números negativos). Esto hace que la función sea reutilizable al máximo.
También se pueden definir funciones en una línea usando el símbolo @
:
% Una funcion con un solo argumento
f = @(x)(1 + 2*sin(x))
% Una funcion con dos argumentos
f = @(x, y)(1 + sin(x + y))
Escribe las dos funciones de ejemplo anteriores sin usar @
, sino definiendo las funciones del modo habitual usando function
.
Escribe la función siguiente en una sóla línea:
function s = sumacuadrados(x,y)
%Recibe dos números como argumentos y devuelve la suma de sus cuadrados
s = x**2 + y**2;
end
Atención: no todas las funciones se pueden definir en una sóla línea con @
, pero todas las funciones se pueden definir usando function
.
En matlab
tienes montones de librerías que te ofrecen funciones que puedes usar. Pero para usarlas, tienes que:
Si no has conseguido encontrar la función que necesitas, prueba alguna de las siguientes opciones:
matlab
, por ejemplo matlab bisection
.
Ten en cuenta los siguientes consejos para elegir un resultado de búsqueda:matlab
es la mejor opción.stackoverflow
donde hay más de una respuesta, y se votan las mejores respuestas, te permiten contrastar las soluciones alternativas.Una vez encontrada la función, puedes leer su documentación escribiendo en la terminal de comandos help
seguido del nombre de la función
help exp
Busca funciones ya existentes que realicen las tareas siguientes:
Además de para crear funciones, puedes usar archivos fichero.m
para guardar juntos una serie de comandos que ejecutan una tarea.
El uso que le daremos durante este curso es el siguiente: crea un script para cada ejercicio que resuelvas.
.m
. input
, que obliga a teclear los datos del problema, y puede que el script no funcione si el usuario no escribe los datos de la forma que esperas (por ejemplo, si tu programa espera una función y el usuario introduce texto que define la función).