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.
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.m
myfunction
squareMe
doubleMe
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
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.
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)