Funciones en MATLAB: Definición, Workspace, Entradas y Salidas
Una función es un grupo de sentencias que realizan una tarea. En MATLAB, las funciones se definen en archivos separados. El nombre del archivo y de la función deben coincidir.
Las funciones operan en su propio workspace local, separado del workspace base (línea de comandos).
Pueden aceptar múltiples argumentos de entrada y devolver múltiples salidas.
Sintaxis Básica
function [out1,out2,...,outN] = myfun(in1,in2,in3,...,inN)
Ejemplo: Función mymax
Archivo mymax.m:
function max = mymax(n1,n2,n3,n4,n5) % Esta función calcula el máximo de cinco números max = n1; if(n2 > max) max = n2; end if(n3 > max) max = n3; end if(n4 > max) max = n4; end if(n5 > max) max = n5; end end
- Primera línea: palabra clave function, salidas = nombre(entradas).
- Comentarios iniciales: texto de ayuda (se muestra con
help mymax). - Llamada:
mymax(34,78,89,23,11)→ans = 89.
Funciones Anónimas
Definidas en una sola línea, sin archivo separado. Sintaxis:
f = @(arglist)expression
Ejemplo: Potencia
power = @(x,n) x.^n; result1 = power(7,3) % 343 result2 = power(49,0.5) % 7 result3 = power(10,-10) % 1e-10 result4 = power(4.5,1.5)% 9.5459
Funciones Primarias y Subfunciones
Cada archivo de función tiene una función primaria (obligatoria, primera) y subfunciones opcionales (solo visibles dentro del archivo).
Ejemplo: Ecuación Cuadrática
Archivo quadratic.m:
function [x1,x2] = quadratic(a,b,c) % Raíces de ecuación cuadrática d = disc(a,b,c); % llama a subfunción x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end function dis = disc(a,b,c) % subfunción dis = sqrt(b^2 - 4*a*c); end
Llamada: quadratic(2,4,-4) → ans = 0.7321.
Funciones Anidadas (Nested Functions)
Definidas dentro del cuerpo de otra función. Comparten el workspace de la función contenedora.
Ejemplo: Quadratic con función anidada
function [x1,x2] = quadratic2(a,b,c) function disc % función anidada d = sqrt(b^2 - 4*a*c); end disc; x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end
Funciones Privadas
Funciones primarias visibles solo para funciones en la carpeta padre. Se colocan en subcarpeta llamada private.
Ejemplo
- Carpeta
private/condisc.m(función privada). - Archivo
quadratic3.men carpeta padre llama adisc.
Variables Globales
Compartidas entre funciones. Declarar global VAR en cada función y en base workspace si se necesita.
Buena práctica: nombres en mayúsculas (ej. TOTAL).
Ejemplo
Archivo average.m:
function avg = average(nums) global TOTAL avg = sum(nums)/TOTAL; end
Script:
global TOTAL; TOTAL = 10; n = [34,45,25,45,33,19,40,34,38,42]; av = average(n) % 35.5
MATLAB
- 10 funciones esenciales de Insight para optimizar la impresión FDM de Stratasys
- Funciones en C++ Explicadas con Ejemplos de Código Prácticos
- Dominando funciones en C: Estructura, declaración y mejores prácticas
- Dominar las funciones en Verilog para diseño RTL eficiente
- MATLAB: Visión General del Entorno Líder en Computación Numérica
- Variables en MATLAB: Conceptos Básicos y Ejemplos Prácticos
- Comandos Esenciales de MATLAB para Computación Eficiente
- Tipos de Datos en MATLAB: Guía Completa de Conversión y Determinación
- Matrices en MATLAB: Creación, Referenciación y Manipulación de Datos
- MATLAB - Números: Tipos, Almacenamiento y Conversión
- Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas