Contenido principal

function

Declarar el nombre, las entradas y las salidas de una función

Descripción

function [y1,...,yN] = myfun(x1,...,xM) declara una función llamada myfun que acepta entradas x1,...,xM y devuelve salidas y1,...,yN. Esta instrucción de declaración debe ser la primera línea ejecutable de la función. Los nombres de función válidos comienzan con un carácter alfabético y pueden contener letras, números o guiones bajos.

  • Con una salida, los corchetes son opcionales: function y = myfun(x1,...,xM)

  • Sin salidas, omita el signo igual: function myfun(x1,...,xM)

  • Sin entradas, los paréntesis son opcionales: function [y1,...,yN] = myfun

Puede guardar la función:

  • En un archivo de función que solo contenga definiciones de funciones. El nombre del archivo debe coincidir con el nombre de la primera función del archivo.

  • En un archivo de script que contenga comandos y definiciones de funciones. Los archivos de script no pueden tener el mismo nombre que una función del archivo.

    Antes de R2024a: Las funciones locales en scripts deben definirse al final del archivo, después de la última línea de código del script.

Los archivos pueden incluir varias funciones locales o funciones anidadas. Para facilitar la lectura, utilice la palabra clave end para indicar el final de cada función en un archivo. La palabra clave end es obligatoria cuando:

  • Una función del archivo contiene una función anidada.

  • La función es una función local dentro de un archivo de función, y cualquier función local del archivo utiliza la palabra clave end.

  • La función es una función local dentro de un archivo de script.

ejemplo

Ejemplos

contraer todo

Defina una función en un archivo llamado calculateAverage.m que acepte un vector de entrada, calcule la media de los valores y devuelva un único resultado.

function ave = calculateAverage(x)
    ave = sum(x(:))/numel(x); 
end

Llame a la función desde la línea de comandos.

z = 1:99;
ave = calculateAverage(z)
ave = 
50

Defina una función en un archivo llamado stat.m que devuelva la media y la desviación estándar de un vector de entrada.

function [m,s] = stat(x)
    n = length(x);
    m = sum(x)/n;
    s = sqrt(sum((x-m).^2/n));
end

Llame a la función desde la línea de comandos.

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat(values)
ave = 
47.3400
stdev = 
29.4124

Defina una función en un archivo llamado plotData.m que represente entradas usando parámetros personalizados.

function plotData(Xdata,Ydata)
    plot(Xdata,Ydata,Color="black",LineStyle="-.")
end

Llame a la función desde la línea de comandos.

Xdata = 1:100;
Ydata = sin(pi/20*Xdata);
plotData(Xdata,Ydata)

Figure contains an axes object. The axes object contains an object of type line.

Defina un script en un archivo llamado integrationScript.m que calcule el valor del integrando en $2\pi/3$ y calcule el área bajo la curva de 0 a $\pi$. Incluya una función local que defina el integrando $y = \sin(x)^3$.

% Compute the value of the integrand at 2*pi/3.
x = 2*pi/3;
y = myIntegrand(x)

% Compute the area under the curve from 0 to pi.
xmin = 0;
xmax = pi;
f = @myIntegrand;
a = integral(f,xmin,xmax)

function y = myIntegrand(x)
    y = sin(x).^3;
end
y =

    0.6495


a =

    1.3333

Defina dos funciones en un archivo llamado stat2.m, donde la primera función llame a la segunda.

function [m,s] = stat2(x)
    n = length(x);
    m = avg(x,n);
    s = sqrt(sum((x-m).^2/n));
end

function m = avg(x,n)
    m = sum(x)/n;
end

La función avg es una función local. Las funciones locales solo están disponibles para otras funciones del mismo archivo.

Llame a la función stat2 desde la línea de comandos.

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat2(values)
ave =
   47.3400
stdev =
   29.4124

Defina una función que restrinja la entrada a un vector numérico que no contenga elementos Inf ni NaN.

function [m,s] = stat3(x)
    arguments
        x (1,:) {mustBeNumeric, mustBeFinite}
    end
    n = length(x);
    m = avg(x,n);
    s = sqrt(sum((x-m).^2/n));
end

function m = avg(x,n)
    m = sum(x)/n;
end

En el bloque de código arguments, (1,:) indica que x debe ser un vector. Las funciones de validación, {mustBeNumeric, mustBeFinite}, restringen los elementos de x a valores numéricos que no son Inf ni NaN. Para obtener más información, consulte Function Argument Validation.

Llamar a la función con un vector que contiene un elemento NaN infringe la declaración del argumento de entrada. Esta infracción provoca un error de la función de validación mustBeFinite.

values = [12.7, 45.4, 98.9, NaN, 53.1];
[ave,stdev] = stat3(values)
Invalid input argument at position 1. Value must be finite.

Historial de versiones

Introducido antes de R2006a

expandir todo