Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

function

Dichiarare il nome della funzione, gli input e gli output

Descrizione

esempio

function [y1,...,yN] = myfun(x1,...,xM) dichiara una funzione denominata myfun che accetta input x1,...,xM e restituisce output y1,...,yN. Questa dichiarazione di istruzione deve essere la prima riga eseguibile della funzione. I nomi validi di una funzione iniziano con un carattere alfabetico e possono contenete lettere, numeri o trattini bassi.

È possibile salvare la funzione:

  • In un file di funzione che contiene solo le definizioni della funzione. Il nome del file deve corrispondere al nome della prima funzione del file.

  • In un file di script che contiene i comandi e le definizioni della funzione. Le funzioni devono trovarsi alla fine del file. I file di script non possono avere lo stesso nome di una funzione del file. Le funzioni sono supportate negli script dalla release R2016b o successive.

I file possono includere più funzioni locali o annidate. Per una maggiore leggibilità, utilizzare la parola chiave end per indicare la fine di ciascuna funzione in un file. La parola chiave end è richiesta quando:

  • Qualsiasi funzione del file contiene una funzione annidata.

  • La funzione è una funzione locale all'interno di un file di funzioni e qualsiasi funzione locale nel file utilizza la parola chiave end.

  • La funzione è una funzione locale all'interno di un file di script.

Esempi

comprimi tutto

Definire una funzione in un file denominato calculateAverage.m che accetti un vettore di input, calcoli la media dei valori e restituisca un risultato singolo.

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

Chiamare la funzione dalla riga di comando.

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

Definire una funzione in un file denominato stat.m che restituisca la media e la deviazione standard di un vettore di input.

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

Chiamare la funzione dalla riga di comando.

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

Definire uno script in un file denominato integrationScript.m che calcoli il valore dell’integranda in corrispondenza di $2\pi/3$ e l’area sotto la curva da 0 a $\pi$. Include una funzione locale che definisce l’integranda $y = \sin(x)^3$.

Nota: per includere funzioni negli script, è necessario disporre della release MATLAB® R2016b o successive.

% 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

Definire due funzioni in un file denominato stat2.m, dove la prima funzione chiama la seconda.

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 funzione avg è una funzione locale. Le funzioni locali sono disponibili solo per altre funzioni all'interno dello stesso file.

Chiamare la funzione stat2 dalla riga di comando.

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

Definire una funzione che limiti l'input a un vettore numerico che non contenga elementi Inf o NaN. Questa funzione utilizza la parola chiave arguments, che è valida per le versione MATLAB® R2019b e successive.

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

Nel blocco di codice arguments, (1,:) indica che x deve essere un vettore. Le funzioni di convalida {mustBeNumeric, mustBeFinite} limitano gli elementi in x a valori numerici che non siano Inf o NaN. Per maggiori informazioni, vedere Function Argument Validation.

La chiamata della funzione con un vettore che contiene un elemento NaN viola la dichiarazione dell’argomento di input. Questa violazione comporta un errore nella funzione di convalida 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.

Cronologia versioni

Introduzione prima di R2006a

espandi tutto