Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Tipos de funciones

Funciones locales y anidadas en un archivo

Los archivos de programa pueden contener varias funciones. Las funciones locales y anidadas son útiles para dividir programas en tareas más pequeñas, lo que facilita la lectura y el mantenimiento del código.

son subrutinas que están disponibles dentro del mismo archivo.Las funciones locales Las funciones locales son la forma más común de dividir las tareas programáticas. En un archivo de función, que sólo contiene definiciones de función, las funciones locales pueden aparecer en el archivo en cualquier orden después de la función main en el archivo. En un archivo de script, que contiene comandos y definiciones de función, la función local debe estar al final del archivo. (Las funciones de los scripts se admiten en R2016b o posterior.)

Por ejemplo, cree un archivo de función denominado que contenga una función principal y dos funciones locales, y:myfunction.mmyfunctionsquareMedoubleMe

function b = myfunction(a)    b = squareMe(a)+doubleMe(a); end function y = squareMe(x)    y = x.^2; end function y = doubleMe(x)    y = x.*2; end

Puede llamar a la función Main desde la línea de comandos u otro archivo de programa, aunque las funciones locales sólo están disponibles para:myfunction

myfunction(pi)
ans =    16.1528

están completamente contenidas en otra función.Las funciones anidadas La diferencia principal entre las funciones anidadas y las funciones locales es que las funciones anidadas pueden usar variables definidas en funciones primarias sin pasar explícitamente esas variables como argumentos.

Las funciones anidadas resultan útiles cuando las subrutinas comparten datos, como las aplicaciones que pasan datos entre componentes. Por ejemplo, cree una función que le permita establecer un valor entre 0 y 1 utilizando un deslizador o un cuadro de texto editable. Si utiliza funciones anidadas para las devoluciones de llamada, el control deslizante y el cuadro de texto pueden compartir el valor y los identificadores de los demás sin pasarlos explícitamente:

function myslider value = 0; f = figure; s = uicontrol(f,'Style','slider','Callback',@slider); e = uicontrol(f,'Style','edit','Callback',@edittext,...                 'Position',[100,20,100,20]);     function slider(obj,~)       value = obj.Value;       e.String = num2str(value);    end    function edittext(obj,~)       value = str2double(obj.String);       s.Value = value;    end  end

Funciones privadas en una subcarpeta

Al igual que las funciones locales o anidadas, las funciones privadas solo son accesibles para las funciones de una ubicación específica. Sin embargo, las funciones privadas no están en el mismo archivo que las funciones que pueden llamarlas. En su lugar, se encuentran en una subcarpeta denominada.private Las funciones privadas solo están disponibles para las funciones de la carpeta situada justo encima de la carpeta.private Utilice funciones privadas para separar el código en diferentes archivos o para compartir código entre varias funciones relacionadas.

Funciones anónimas sin un archivo

Las funciones anónimas permiten definir una función sin crear un archivo de programa, siempre que la función esté formada por una sola instrucción. Una aplicación común de funciones anónimas es definir una expresión matemática y, a continuación, evaluar esa expresión en un intervalo de valores utilizando MATLAB®, es decir, una función que acepte un identificador de función como entrada.function function

Por ejemplo, esta instrucción crea un identificador de función denominado para una función anónima:s

s = @(x) sin(1./x);

Esta función tiene una sola entrada,.x El operador crea el identificador de función.@

Puede utilizar el identificador de función para evaluar la función para determinados valores, como

y = s(pi)
y = 0.3130 

O, puede pasar el identificador de función a una función que se evalúa en un rango de valores, como:fplot

range = [0.01,0.1]; fplot(s,range)

Temas relacionados