2010-01-20 16 views

Respuesta

17

El operador @ crea un control de función, algo que le permite crear y pasar fácilmente una llamada a una función como una variable. Tiene muchas características agradables, ninguna de las cuales está disponible para usted desafortunadamente. Esto se debe a que, como sospecha, no se introdujo en matlab hasta la versión 7, el lanzamiento inmediatamente posterior al suyo.

7

Solía ​​declarar Anonymous Functions en Matlab.

Creo que los términos son "Function Handle".

Prácticamente cubre la incapacidad de Matlab para declarar una función en cualquier lugar en cualquier archivo M.

Usted puede ver aquí: What is your favourite MATLAB/Octave programming trick?

Me pareció que es útil en el procesamiento de imágenes junto con el comando "blockproc".

+0

En realidad, se denomina manejador de función (no manejador) usando convenciones de nomenclatura similares, ya que los objetos gráficos también tienen 'manejadores'. – MatlabDoug

+0

Solucionado, gracias. – Royi

1

function_handle (@)

manija utilizado en llamar a las funciones indirectlyexpand todo en la página Sintaxis mango = @functionname mango = @ (arglist) anonymous_function

Descripción

mango vuelva = @functionname un controlador para la función MATLAB® especificada.

Un identificador de función es un valor de MATLAB que proporciona un medio para llamar a una función indirectamente. Puede pasar identificadores de funciones en llamadas a otras funciones (a menudo llamadas funciones de funciones). También puede almacenar identificadores de función en estructuras de datos para su uso posterior (por ejemplo, como devoluciones de llamada con gráficos de manipulación). Un identificador de función es uno de los tipos de datos estándar de MATLAB.

En el momento en que crea un identificador de función, la función que especifique debe estar en la ruta MATLAB y en el alcance actual del código que crea el identificador. Por ejemplo, puede crear un identificador para una función local siempre que lo haga desde dentro del archivo que define esa función local. Esta condición no se aplica cuando evalúa el manejador de la función. Puede, por ejemplo, ejecutar una función local desde un archivo separado (fuera del alcance) utilizando un identificador de función. Esto requiere que el identificador haya sido creado por la función local (dentro del alcance).

handle = @ (arglist) anonymous_function crea una función anónima y devuelve un descriptor de esa función. El cuerpo de la función, a la derecha de los paréntesis, es una sola instrucción o comando MATLAB. arglist es una lista de argumentos de entrada separados por comas. Ejecute la función llamándola por medio de la función handle, handle.

Ejemplos

Ejemplo 1 - Construcción de un identificador a una función llamada El siguiente ejemplo se crea un identificador de función para la función de jorobas y lo asigna a la fhandle variable.

fhandle = @humps; Pase el controlador a otra función de la misma manera que pasaría cualquier argumento. Este ejemplo pasa el identificador de función recién creado a fminbnd, que luego se minimiza durante el intervalo [0.3, 1].

x = fminbnd (fhandle, 0,3, 1) x = 0,6370 La función fminbnd evalúa el identificador de función @humps. Una pequeña porción del archivo fminbnd se muestra a continuación. En la línea 1, el parámetro de entrada funfcn recibe el identificador de función @humps que se pasó. La instrucción, en la línea 113, evalúa el identificador.

1 función [xf, fval, exitflag, salida] = ... fminbnd (funfcn, ax, bx, options, varargin) . . . 113 fx = funfcn (x, varargin {:});

+0

Creo que un enlace actualizado sería mejor que simplemente copiarlo. Al menos puede borrar "expand all ...", "Syntax", etc., y organizarlo en la página para que sea más legible – Adiel

Cuestiones relacionadas