Tag Archives: funzioni matlab

Come definire una funzione in Matlab

MATLAB
Le Funzioni in matlab sono M-file che possono accettare argomenti d’entrata e forniscono argomenti di uscita. Il nome dell’M-file e della funzione deve essere lo stesso. Le Funzioni operano su variabili definite nel workspace proprio, separato dal workspace a cui si accede all’ingresso di MATLAB, cioè le variabili usate all’interno della funzione sono locali.

Vediamo come definire una funzione in Matlab con parametri in ingresso e parametri in uscita. Si voglia costruire una funzione che, dati i lati ”a” e ”b” di un rettangolo fornisca l’area ”A”, il perimetro ”p” e la diagonale ”d”. Indichiamo con (a; b) la lista d’ingresso (parentesi tonde) e con [A; p; d] la lista d’uscita (parentesi quadre) (si noti la virgola fra i parametri).

function [ A , p , d ] =rettang ( a , b )
A = a * b; 
p = 2 * ( a + b );
d =sqrt ( a^2 + b^2 );

Si noti che non c’è confusione tra la lettera A (maiuscolo) e la a (minuscolo) perchè MATLAB distingue le lettere maiuscole dalle minuscole. Questa function, salvata con il nome rettang.m può essere richiamata da un altro modulo o direttamente dalla finestra comandi ad esempio con il comando:

[area; perim; diag] =rettang(2; 3)

Quindi la sintassi da utilizzare è la seguente:

function [lista d'uscita] = nome (lista d'ingresso)

Un buono esempio è fornito dalla funzione rank. L’M-file rank.m è disponibile nella directory toolbox/matlab/matfun. Si può lanciare il file digitando:

rank

Il file in questione è il seguente.

function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of linearly
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.
s = svd(A);
if nargin==1
tol = max(size(A)) * max(s) * eps;
end
r = sum(s > tol);

La prima linea di una funzione M-file inizia con la funzione keyword. La quale da il nome alla funzione ed ordina gli argomenti. In questo caso,ci sono due argomenti di input ed uno di output. Le righe seguenti,che iniziano con il simbolo %, rappresentano dei commenti per un aiuto, non vengono considerate nell’applicazione. Queste linee si stampano quando si digita:

help rank

La prima linea del testo di aiuto è la H1 line che MATLAB espone quando si ricerca aiuto digitando help on nella directory che contiene la funzione. Il resto del file rappresenta codice eseguibile MATLAB definendo la funzione. La variabile s presente nel corpo della funzione, cosìcome le variabili sulla prima fila r, A e tol, sono del tutto locali alla funzione; sono indipendenti e separate da qualsiasi variabile nel workspace di MATLAB. Questo esempio illustra un aspetto delle funzioni di MATLAB, che ordinariamente non si trova negli altri linguaggi di programmazione , un numero variabile di argomenti. La funzione rank può essere usata in molti modi diversi:

rank(A)
r = rank(A)
r = rank(A,1.e-6)

Ricordiamo ancora una volta che se nessun argomento di output è fornito, il risultato è immagazzinato nella variabile ans. Se il secondo argomento di input non è fornito, la funzione calcola un valore di default. Fra il corpo della funzione, due quantità chiamate nargin e nargout sono disponibili, le quali ci dicono il numero di argomenti di input e di output coinvolti in ciascun uso della funzione. La funzione rank usa nargin, ma non ha bisogno di usare nargout.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: