← MATLAB EspañolChapter 05 of 13

Funciones

## Objetivos de Aprendizaje - Comprender scripts vs archivos de funciones - Crear y llamar funciones - Pasar parametros y devolver valores - Trabajar con funciones anonimas - Manejar listas de argumentos variables ## Scripts vs Funciones ### Scripts - Guardados en archivos `.m` con comandos - Operan sobre variables en el espacio de trabajo - No tienen argumentos de entrada/salida ```matlab % miscript.m a = 5; b = 10; c = a + b; disp(c); ``` ### Script vs Funcion - Aceptan entradas y devuelven salidas - Tienen su propio espacio de trabajo - Encapsulan codigo reutilizable ```matlab % mifuncion.m function salida = mifuncion(entrada) salida = entrada * 2; end ``` ## Estructura del Archivo de Funcion ### Funcion Basica ```matlab function salida = cuadrado(x) %CUADRADO Devuelve el cuadrado de un numero % cuadrado(x) calcula x^2 salida = x ^ 2; end ``` ### Multiples Entradas y Salidas ```matlab function [suma, producto] = calc(x, y) %CALC Calcula suma y producto % [s, p] = calc(x, y) devuelve suma s y producto p suma = x + y; producto = x * y; end ``` ### Funcion sin Salida ```matlab function printMessage(msg) %PRINTMESSAGE Muestra un mensaje disp(msg); end ``` ## Llamando Funciones ### Llamada Basica ```matlab % Salida unica resultado = cuadrado(5); disp(resultado); % 25 % Multiples salidas [s, p] = calc(3, 4); disp(s); % 7 disp(p); % 12 ``` ### Paso por Valor ```matlab % MATLAB usa paso por valor para la mayoria de tipos function y = doble(x) x = x * 2; y = x; end a = 5; b = doble(a); disp(a); % 5 (sin cambios) disp(b); % 10 ``` ## FuncionesAnonimas ### FuncionAnonima Basica ```matlab % Sintaxis: @(args) expresion sqr = @(x) x ^ 2; resultado = sqr(5); % 25 % Multiples entradas add = @(x, y) x + y; resultado = add(3, 4); % 7 ``` ### Usando FuncionesAnonimas ```matlab % Como argumentos de funciones arr = [1, 2, 3, 4, 5]; resultado = arrayfun(@(x) x^2, arr); % Crear manejadores de funcion f = @(x) sin(x) / x; f(0) % Devuelve 1 (limite) ``` ### Devolviendo Multiples Valores ```matlab % Usando celdas stats = @(x) {mean(x), std(x)}; resultado = stats([1, 2, 3, 4, 5]); meanVal = resultado{1}; % 3 stdVal = resultado{2}; % 1.5811 ``` ## Argumentos Variables ### Numero Variable de Entradas ```matlab function resultado = sumAll(varargin) %SUMALL Suma todos los argumentos de entrada resultado = 0; for i = 1:length(varargin) resultado = resultado + varargin{i}; end end sumAll(1, 2, 3) % 6 sumAll(1, 2, 3, 4) % 10 ``` ### Numero Variable de Salidas ```matlab function varargout = powers(x, n) %POWERS Devuelve potencias de x de 1 a n for i = 1:n varargout{i} = x ^ i; end end [a, b, c] = powers(2, 3); % a=2, b=4, c=8 ``` ## Funciones Anidadas ### Alcance de Funciones Anidadas ```matlab function outerFunction(x, y) %OUTERFUNCTION Funcion externa z = 10; function innerFunction(a) %INNERFUNCTION Funcion anidada % Puede acceder a x, y, z del alcance externo resultado = a + x + y + z; disp(resultado); end innerFunction(5); end ``` ### Variables Compartidas ```matlab function mainFunction() compartido = 0; function incrementar() % Puede modificar la variable compartida compartido = compartido + 1; end incrementar(); incrementar(); disp(compartido); % 2 end ``` ## Argumentos Predeterminados ### Verificando Existencia de Entrada ```matlab function resultado = saludar(nombre) if ~exist('nombre', 'var') nombre = 'Mundo'; end resultado = ['Hola, ', nombre, '!']; end saludar() % 'Hola, Mundo!' saludar('MATLAB') % 'Hola, MATLAB!' ``` ### Usando nargin ```matlab function resultado = interes(principal, tasa, anos) if nargin < 3 anos = 1; end if nargin < 2 tasa = 0.05; end if nargin < 1 principal = 1000; end resultado = principal * (1 + tasa) ^ anos; end ``` ## Retorno Temprano ### Salida Anticipada ```matlab function resultado = safeDivide(a, b) %SAFEDIVIDE Divide a por b de forma segura if b == 0 resultado = NaN; return; end resultado = a / b; end ``` ## Funciones de Funciones ### Pasando Funciones como Argumentos ```matlab % Usar @ para manejador de funcion f = @(x) x^2 - 2*x + 1; root = fzero(f, 0); % Encontrar raiz de funcion % Integracion integral(@sin, 0, pi) % 2 ``` ### Optimizacion ```matlab % Encontrar minimo de funcion f = @(x) (x-3)^2 + 1; [xMin, fMin] = fminsearch(f, 0); ``` ## Resumen - Los scripts contienen comandos; las funciones acceptan entradas y devuelven salidas - Los archivos de funciones comienzan con la palabra clave `function` - Funciones anonimas: `@(args) expresion` - Usar `varargin`/`varargout` para argumentos variables - Las funciones anidadas tienen acceso al espacio de trabajo padre - Usar `nargin`/`nargout` para verificar el numero de argumentos - Usar `@` para crear manejadores de funcion

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →