Professional Documents
Culture Documents
Informtica Aplicada
Prototipo de una funcin Argumentos de entrada Variables locales Retorno(s) de salida Clculo del valor medio Clculo de la varianza y desviacin tpica Invocaciones a funcin simples Invocaciones a funcin anidadas Definicin de funcin recursiva Ejemplos de funciones recursivas
Tema 9
2.
Ejemplos de funciones
Funciones en MATLAB
3. 4.
Funciones recursivas
Ivn Cantador
Departamento de Ingeniera Informtica Escuela Politcnica Superior Universidad Autnoma de Madrid 9 Funciones en MATLAB
Informtica Aplicada Grado en Ingeniera Qumica Universidad Autnoma de Madrid
Prototipo de una funcin Argumentos de entrada Variables locales Retorno(s) de salida Clculo del valor medio Clculo de la varianza y desviacin tpica Invocaciones a funcin simples Invocaciones a funcin anidadas
Los ficheros con extensin .m son ficheros de texto sin formato (ASCII) que constituyen el centro de programacin en MATLAB
2.
Ejemplos de funciones
Se pueden crear y modificar con cualquier editor de textos Se pueden crear y modificar en el Editor del MATLAB IDE, que es tambin su Depurador
3.
Fichero de comandos: si contiene un conjunto de comandos que se ejecutan sucesivamente cuando se escribe el nombre del fichero en la lnea de comandos del Interprete de MATLAB
- Las variables que se crean en el fichero se mantienen en el workspace cuando se termina la ejecucin del fichero
4.
Funciones recursivas
Fichero de funciones: si contiene un conjunto de instrucciones encapsuladas dentro de una funcin, declarada mediante la palabra reservada function
- Las variables que se crean en la funcin son locales a ella, y NO se mantienen en el workspace cuando se termina la ejecucin de la funcin
Funciones en MATLAB
Un nombre, con el que se invoca/ejecuta la funcin - Debe coincidir con el nombre del fichero .m donde est escrita la funcin Unos argumentos de entrada, sobre los cuales se aplica el algoritmo o funcionalidad implementada por la funcin - Puede ocurrir que la funcin no necesite argumentos de salida Unas sentencias, que constituyen el algoritmo o funcionalidad implementada por la funcin Unos retornos de salida, que corresponden al resultado de la ejecucin de la funcin - Puede ocurrir que la funcin no devuelva un valor de retorno
Argumentos de entrada
Variables locales
Los argumentos de entrada se declaran en el prototipo de la funcin entre parntesis y separados por comas, despus del nombre de la funcin Una funcin puede tener un nmero indeterminado de argumentos de entrada
- Se declara un nico argumento de entrada de nombre varargin (en realidad es una variable predefinida en el workspace) - Dicha variable almacena los argumentos de entrada, accesibles mediante llaves { } - El nmero de argumentos se almacena en la variable nargin
function [m] = maximo(varargin) m = -inf; for i = 1 : nargin, if ( varargin{i} > m ), m = varargin{i}; end; end;
El mbito o alcance de las variables declaradas en una funcin (que no sean sus retornos de salida) es la propia funcin
Dichas variables son locales a la funcin, y no son accesibles desde fuera de ella Los valores de las variables locales de una funcin se pierden cuando se acaba la ejecucin de la funcin
function funcionInutil() x = 2; ... >> funcionInutil(); >> x >> % x no existe en el workspace; es local a la funcin error: x undefined
Retorno(s) de salida
En el prototipo de la funcin vienen declarados entre corchetes y separados por comas, despus de la palabra reservada function, y antes del smbolo igual = y el nombre de la funcin Si una funcin no devuelve un retorno, los corchetes y el smbolo se pueden omitir
Prototipo de una funcin Argumentos de entrada Variables locales Retorno(s) de salida Clculo del valor medio Clculo de la varianza y desviacin tpica Invocaciones a funcin simples Invocaciones a funcin anidadas Definicin de funcin recursiva Ejemplos de funciones recursivas
2.
Ejemplos de funciones
3.
4.
Funciones recursivas
Funciones en MATLAB
10
11
Funcin que calcula la varianza y desviacin muestrales de una lista de nmeros x1,, xN
function [varianza, desviacion] = calcularVarianzaDesviacion(lista) media = 0; for n = 1 : length(lista), media = media + lista(n); end; media = media / lentgh(lista); varianza = 0; for n = 1 : lenght(lista), varianza = varianza + (lista(n)-media).^2; end; varianza = varianza / lenght(lista); desviacion = sqrt(varianza);
12
13
Funcin que calcula la varianza y desviacin muestrales de una lista de nmeros x1,, xN
function [varianza, desviacion] = calcularVarianzaDesviacion(lista) media = calcularMedia(lista); varianza = 0; for n = 1 : lenght(lista), varianza = varianza + (lista(n)-media).^2; end; varianza = varianza / lenght(lista); desviacion = sqrt(varianza);
Funcin que calcula la varianza y desviacin muestrales de una lista de nmeros x1,, xN
function [varianza, desviacion] = calcularVarianzaDesviacion(lista) media = calcularMedia(lista); N = lenght(lista); varianza = 0; for n = 1 : N, varianza = varianza + (lista(n)-media).^2; end; varianza = varianza / N; desviacion = sqrt(varianza);
14
15
Prototipo de una funcin Argumentos de entrada Variables locales Retorno(s) de salida Clculo del valor medio Clculo de la varianza y desviacin tpica Invocaciones a funcin simples Invocaciones a funcin anidadas Definicin de funcin recursiva Ejemplos de funciones recursivas
En MATLAB, la invocacin (llamada, ejecucin) de una funcin se realiza desde el Interprete de comandos escribiendo el nombre de la funcin
2.
Ejemplos de funciones
El nombre de las variables de entrada no tiene que coincidir necesariamente con el nombre de los argumentos de entrada del prototipo de la funcin El nombre de las variables salidas no tiene que coincidir necesariamente con el nombre de los retornos del prototipo de la funcin
% Prototipo: function [media] = calcularMedia(lista) >> x = (1 2 3 4 5 6); >> m = calcularMedia(x); >> m m = 3.5 >>
3.
4.
Funciones recursivas
Funciones en MATLAB
16
17
Un argumento de entrada de una funcin puede ser el resultado de una llamada a esa u otra funcin, o el resultado de una operacin aritmtica o lgica
>> x = (1 2 3 4 5 6); >> y = maximo(2 * calcularMedia(x), maximo(x)); >> y y = 7 >>
Prototipo de una funcin Argumentos de entrada Variables locales Retorno(s) de salida Clculo del valor medio Clculo de la varianza y desviacin tpica Invocaciones a funcin simples Invocaciones a funcin anidadas Definicin de funcin recursiva Ejemplos de funciones recursivas
2. 7
Ejemplos de funciones
2 * calcularMedia(x)
3.5
maximo(x)
4.
Funciones recursivas
calcularMedia(x)
Funciones en MATLAB
18
19
Factorial de un nmero
En MATLAB:
function [fact] = factorial(x) if ( x == 1 ), fact = 1; elseif fact = x * factorial(x-1); end;
Una frmula recursiva que simplifica el problema en uno o varios subproblemas, atendiendo al paradigma Divide y Vencers - Ejemplo: factorial de un nmero, fact(n) = n * fact(n1) Uno o varios casos base, que se pueden resolver directamente, sin necesidad de recursin - Ejemplo: factorial de un nmero, fact(1) = 1
20
21
Sucesin de Fibonacci
Nmeros combinatorios
Frmula recursiva: C(n, m) = C(n1, m1) + C(n1, m) Caso(s) base: C(0, m) = 1, C(n, n) = 1
En MATLAB:
function [fib] = fibonacci(x) if ( x == 0 | x == 1 ), fib = 1; elseif fib = fibonacci(x-1) + fibonacci(x-2); end;
En MATLAB:
function [comb] = combinatorio(n, m) if ( n == 0 | n == m ), comb = 1; elseif comb = combinatorio(n-1, m-1) + combinatorio(n-1, m); end;