Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Crear un identificador de función

Puede crear identificadores de funciones denominadas y anónimas. Puede almacenar varios identificadores de funciones en un arreglo, así como guardarlos y cargarlos, como haría con cualquier otra variable.

¿Qué es un identificador de función?

Un identificador de función es un tipo de dato de MATLAB® que almacena una asociación con una función. Llamar indirectamente a una función le permite invocar la función independientemente del lugar desde el que la llame. Entre los usos habituales de los indicadores de funciones se encuentran los siguientes:

  • Pasar una función a otra función (a menudo denominadas funciones de funciones). Por ejemplo, pasar una función a funciones de integración y optimización, como integral y fzero.

  • Especificar funciones de callback (por ejemplo, un callback que responde a un evento de la IU o interactúa con el hardware de adquisición de datos).

  • Construir identificadores para las funciones definidas en línea en lugar de para las almacenadas en un archivo de programa (funciones anónimas).

  • Llamar a funciones locales desde fuera de la función principal.

Puede ver si una variable, h, es un identificador de función que utiliza isa(h,'function_handle').

Crear identificadores de funciones

Para crear un identificador para una función, preceda el nombre de la función con el signo @. Por ejemplo, si tiene una función llamada myfunction, cree un identificador llamado f como se muestra a continuación:

f = @myfunction;

Se llama a una función que utiliza un identificador de la misma manera en que se llama a la función directamente. Por ejemplo, suponga que tiene una función llamada computeSquare, definida como:

function y = computeSquare(x)
y = x.^2;
end

Cree un identificador y llame a la función para calcular la raíz cuadrada de cuatro.

f = @computeSquare;
a = 4;
b = f(a)
b =

    16

Si la función no requiere ningún valor de entrada, puede llamar a la función con paréntesis vacíos, como

h = @ones;
a = h()
a =

    1

Sin los paréntesis, la asignación crea otro identificador de función.

a = h
a = 

    @ones

Los identificadores de funciones son variables que puede pasar a otras funciones. Por ejemplo, calcule la integral de x2 en el rango [0,1].

q = integral(f,0,1);

Los identificadores de funciones almacenan su ruta absoluta, por lo que cuando se tiene un identificador válido, se puede invocar la función desde cualquier lugar. No tiene que especificar la ruta a la función al crear el identificador, solo el nombre de la función.

Tenga en cuenta lo siguiente al crear identificadores para funciones:

  • Longitud del nombre: cada parte del nombre de la función (incluidos los nombres del paquete y de la clase) debe ser inferior al número especificado por namelengthmax. De lo contrario, MATLAB trunca la última parte del nombre.

  • Ámbito de aplicación: la función debe estar en el ámbito de aplicación en el momento de crear el identificador. Por tanto, la función debe estar en la ruta de MATLAB o en la carpeta actual. También, en caso de identificadores para funciones locales o anidadas, la función debe estar en el archivo actual.

  • Prioridad: cuando hay varias funciones con el mismo nombre, MATLAB utiliza las mismas reglas de prioridad para definir los identificadores de funciones que utiliza para llamar a las funciones. Para obtener más información, consulte Function Precedence Order.

  • Sobrecarga: cuando se invoca un identificador de función con uno o más argumentos, MATLAB determina el argumento dominante. Si el argumento dominante es un objeto, MATLAB determina si la clase del objeto tiene un método que sobrecarga el mismo nombre que la función asociada al identificador de función. Si es el caso, se invoca el método del objeto en lugar de la función asociada.

Funciones anónimas

Puede crear identificadores para funciones anónimas. Una función anónima es una función de MATLAB basada en una expresión de una línea que no requiere un archivo de programa. Construya un identificador para una función anónima definiendo el cuerpo de la función, anonymous_function, y una lista separada por comas de los argumentos de entrada para la función anónima, arglist. La sintaxis es:

h = @(arglist)anonymous_function

Por ejemplo, cree un identificador, sqr, para una función anónima que calcule la raíz cuadrada de un número y llame a la función anónima con su identificador.

sqr = @(n) n.^2;
x = sqr(3)
x =

     9

Para obtener más información, consulte Funciones anónimas.

Arreglos de identificadores de funciones

Puede crear un arreglo de identificadores de funciones recopilándolos en un arreglo de celdas o de estructuras. Por ejemplo, utilice un arreglo de celdas:

C = {@sin, @cos, @tan};
C{2}(pi)
ans =

    -1

O utilice un arreglo de estructuras:

S.a = @sin;  S.b = @cos;  S.c = @tan;
S.a(pi/2)
ans =

     1

Guardar y cargar identificadores de funciones

Puede guardar y cargar identificadores de funciones en MATLAB, como haría con cualquier otra variable. En otras palabras, utilice las funciones save y load. Si guarda un identificador de función, MATLAB guarda la información de la ruta absoluta. Puede invocar la función desde cualquier ubicación a la que pueda acceder MATLAB, siempre que el archivo de la función siga existiendo en esta ubicación. Un identificador deja de ser válido si la ubicación o el nombre del archivo ha cambiado desde que se creó el identificador. Si un identificador no es válido, MATLAB podría mostrar una advertencia al cargar el archivo. Cuando se invoca un identificador no válido, MATLAB emite un error.

Consulte también

| | | |

Ejemplos relacionados

Más acerca de