Tutorial Matllab

Page 82

Aprenda Matlab 7.0 como si estuviera en Primero

página 74

La función str2func recibe como argumento una cadena de caracteres conteniendo el nombre de una función y devuelve como valor de retorno la referencia de función. Una de las ventajas de esta función es que puede realizar la conversión de un vector de celdas con los nombres en un vector de referencias de función. Ejemplos: >> fh = str2func('sin'); >> str2func({'sin','cos','tan'}) ans = @sin @cos @tan

Una característica común e importante de ambos métodos es que se aplican solamente al nombre de la función, y no al nombre de la función precedido o cualificado por su path. Además los nombres de función deben tener menos de 31 caracteres. 6.4.2. EVALUACIÓN DE FUNCIONES MEDIANTE REFERENCIAS La principal aplicación de las referencias de función es pasar información de funciones a otras funciones para que aquéllas puedan ser ejecutadas por éstas. Para evaluar una referencia de función MATLAB utiliza la función feval, que se llama de la forma siguiente: [r1, r2, r3, ...] = feval(fh, arg1, arg2, arg3, ...)

donde fh es una referencia de función y r1, r2, r3, ... y arg1, arg2, arg3, ... son respectivamente los valores de retorno y los argumentos de la función cuya referencia es fh. Sobre la función feval hay que hacer dos observaciones: 1.

La referencia de función fh debe ser un escalar. En otras palabras, no es posible evaluar un array de referencias de función con una sola llamada a feval.

2.

La función fh que se ejecuta en el momento de la llamada a feval depende de la situación en el momento en que se creó la referencia de función, y no de la situación en el momento de la llamada a feval. Por ejemplo, si después de crear la referencia fh se cambia de directorio la función correspondiente, en el momento de la ejecución no será posible encontrarla; si después de crear fh se crea una nueva función con el mismo nombre, esta función no podrá nunca ser ejecutada por medio de la referencia creada previamente.

El siguiente ejemplo muestra cómo se puede ejecutar una sub-función desde otra función definida en un fichero *.m diferente. Recuérdese que, en principio, las sub-funciones sólo son accesibles desde otras funciones definidas en el mismo fichero *.m. Supóngase que se crea un fichero llamado pruebafh.m que contiene las siguientes líneas (se define una función principal pruebafh que se llama como el fichero y una sub-función subf): % fichero pruebafh.m function mifh=pruebafh mifh=@subf;

function A=subf(B, C) A=B+C;

Obsérvese que la función principal pruebafh devuelve una referencia a la sub-función subf. En principio sólo pruebafh tiene acceso a subf y gracias a ese acceso puede crear la referencia mifh. Sin embargo, una vez que la referencia a subf ha sido creada y devuelta como valor de retorno, cualquier función con acceso a pruebafh podrá también acceder a la sub-función subf. El siguiente programa principal, definido en un fichero pruebafhMain.m, puede acceder a la sub-función gracias a la referencia de función (si se intenta acceder directamente se obtiene un error).


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.