CAPITOLO 1

Precedente Su Successiva

INTRODUZIONE AL MATLAB

Il MATLAB è un linguaggio di programmazione matematico ad altissimo livello orientato alla manipolazione delle matrici e dei vettori. Le istruzioni fondamentali che possono essere usate sono in diretta corrispondenza delle funzioni che vengono usate normalmente in matematica per il calcolo matriciale e vettoriale (operazioni algebriche, esponenziale, inversa) e tutte le composizioni di queste funzioni possono essere rapidamente assemblate in una espressione di facile comprensione.

Ogni variabile, matrice o vettore è rappresentata in MATLAB da una lettera o da una combinazione di lettere e numeri che gli viene associata alla prima assegnazione realizzata relativa ad una variabile durante la sessione di lavoro.

Ogni funzione complessa (composizione di funzioni semplici, così come il fattoriale di un numero è composizione di più moltiplicazioni) è facilmente realizzabile e memorizzabile per l’uso futuro o per l’utilizzazione in funzioni più complesse. Le funzioni complesse di uso più comune sono già disponibili nel MATLAB come facenti parte di TOOLBOX, ovvero librerie dedicate ad applicazioni matematiche specialistiche (Signal Processing, Controllo di Processi, Statistica ecc.).

Due particolarità del MATLAB rispetto ai linguaggi di programmazione più diffusi sono la possibilità di utilizzarlo con la linea di comando in una finestra di Windows detta Command Window,che consente di eseguire i comandi su una serie di variabili inserendoli direttamente da una tastiera come se si usasse una calcolatrice scientifica ; l’altra particolarità è la presenza di un ambiente grafico integrato nel quale possono essere disegnati semplicemente gli andamenti delle funzioni che si vogliono analizzare. In realtà in questo ambiente possono essere visualizzate figure molto complesse come l’orbita di un satellite attorno ad un pianeta in 3D ricorrendo a poche istruzioni grafiche, cosa impensabile utilizzando linguaggi di programmazione di livello minore.

LA RAPPRESENTAZIONE DELLE VARIABILI

Una variabile viene rappresentata utilizzando una lettera o una serie di lettere e numeri associata alla variabile in corrispondenza della prima assegnazione. Una assegnazione di una variabile viene realizzata con la seguente semplice sintassi (in cui si assegna alla variabile a il valore 1.1) :

a = 1.1;

Il punto e virgola finale (opzionale) viene utilizzato come terminatore di espressione.

Per variabili si intendono sia matrici che vettori che semplici numeri per cui la rappresentazione di ognuno di questi è identica. Ad esempio, con la notazione

c = a + b;

si può intendere sia una somma di matrici, sia di vettori che di numeri.

Nel caso di un vettore, l’assegnazione può essere realizzata nei seguenti due modi a seconda se si tratti di un vettore riga o un vettore colonna (vettore di 4 elementi):

a = [1 1 4 5.1]; oppure a = [1,1,4,5.1];

a = [1 ;1 ;4 ;5.1]; oppure a = [1 1 4 5.1]’;

Si ha quindi che la virgola o lo spazio all’interno delle parentesi quadre che delimitano il vettore funzionano come separatori di riga mentre il punto e virgola funziona come separatore di colonna. Un vettore colonna puo’ essere dichiarato come un vettore riga e poi trasposto utilizzando come l’operatore di trasposizione l’apice.

Nel caso di una matrice, la sintassi è del tutto analoga, come si vede nell’esempio che segue (dichiarazione di una matrice 4x3) :

a = [1    1      4;
     2    7.1    67;
     4    -12    3;
     3    1     

L’estrazione o l’assegnazione dell’elemento An,m da una matrice viene realizzata con la seguente sintassi :

A(n,m) = 4.5 ;

LE OPERAZIONI FONDAMENTALI

Sono identiche a quelle che fanno parte della algebra dei vettori e delle matrici e hanno una sintassi molto simile o almeno intuitiva. Inoltre tali operazioni sono identiche per le matrici e per i vettori.

Operazione

Rappresentazione

Somma

c = a + b

Differenza

c = a - b

Prodotto

c = a * b 

Divisione

c = a / b

Inversa

c = inv(a)

Esponenziale

c = exp(a)

Radice

c = sqrt(a)

Le altre funzioni hanno una sintassi del tutto analoga. Alcune di queste sono riportate in appendice.

I DUE MODI PER RAGGRUPPARE I COMANDI : GLI M-FILE E LE FUNZIONI

A seconda che si voglia utilizzare una serie di comandi per svolgere un compito del tutto particolare o si voglia realizzare una funzionalità di utilizzazione ricorrente per il progetto da realizzare si dovranno utilizzare degli M-file o delle funzioni.

Un m-file è un semplice file di testo con l’estensione file.m ed è realizzabile ad esempio con l’uso del Notepad od un qualsiasi editor di testo. Deve essere contenuta in una delle directory riconosciute dal MATLAB e non contiene altre specifiche per l’uso se non la correttezza delle dichiarazioni contenute. Un esempio di m-file è una sequenza di istruzioni qualsiasi che fa uso delle variabili già presenti nel MATLAB o ne dichiara di nuove (che rimarranno valide anche dopo il termine dell’esecuzione dell’m-file) come quello riportato qui di seguito :

Al contrario degli m-file, le funzioni sono solitamente utilizzate per raggruppare una sequenza di operazioni (procedura) che più volte viene richiamata all’interno di un progetto per eseguire un’elaborazione di uno o più dati e in cui le variabili utilizzate durante questa elaborazione non sono di interesse del progettista. Infatti le variabili dichiarate all’interno di una funzione sono locali e note solo all’interno della funzione. Oltretutto, le variabili non locali conservate nell’attuale sessione del MATLAB non sono raggiungibili se non passate come argomento della funzione. Un esempio di funzione MATLAB può essere quello che calcola l’anomalia media M a partire dall’anomalia eccentrica E, riportato nella figura che segue :

Una funzione come un M-file è un semplice file di testo che può essere modificato con l’uso di un normale editor di testo. Si differenzia dal punto di vista della sintassi per la dichiarazione di funzione function ad inizio file e del punto di vista computazionale, per l’invisibilità delle variabili ivi dichiarate.

LE ISTRUZIONI CHE MODIFICANO IL FLUSSO DI ESECUZIONE DEL PROGRAMMA

Una serie di parole chiave sono disponibili per modificare il flusso di esecuzione di un programma. Queste istruzioni sono le più semplici e sono previste da tutti i linguaggi di programmazione più comuni.

Istruzione condizionale if ...else...elseif...end

La forma generale di un’affermazione IF è

if condizione,
    istruzioni1;
elseif
condizione2
    istruzioni2
;
else

    istruzioni3
;
end

Le istruzioni1 vengono eseguite se la condizione viene verificata. Altrimenti vengono eseguite le istruzioni2 se la condizione2 è verificata o le istruzioni3 se entrambi le condizioni non sono verificate.

Ad esempio:

if n == m,
    A = 2;
elseif abs(n-m) == 1,
    A = -1;
else
    A = 0;
end

In questo caso la variabile A assumerà il valore 2 se n è pari ad m, sarà -1 se n e m differiscono di un’unità, sarà nulla altrimenti.

Istruzione CICLICA FOR...end

La forma generale di un’affermazione FOR è

for variabile = vettore,
    istruzioni;
end

Le istruzioni vengono eseguite un numero di volte pari alla lunghezza del vettore. Ad ogni ciclo, prima un elemento del vettore viene assegnato alla variabile, poi le istruzioni vengono eseguite utilizzando il valore corrente della variabile.

Ad esempio:

for I = 1:N,
    for J = 1:N,
        A(I,J) = 1/(I+J-1);
    end
end

In questo esempio nel ciclo esterno si assegnano alla variabile i i valori da 1 a N. 

Nel ciclo interno si assegnano alla variabile j i valori da 1 a N.

Istruzione CICLICA WHILE...end

La forma generale di un’affermazione WHILE è

while condizione,
    istruzioni
end

Le istruzioni vengono eseguite ciclicamente finché la condizione rimane non falsa. Ad ogni ciclo, prima la condizione viene testata, poi le istruzioni vengono eseguite.

Ad esempio:

fact[1] = 1;
i = 1;
while i < 20,
    i = i + 1;
    fact[i] = fact[i-1] * 2^i;
end

In questo esempio il vettore fact comprenderà nei suoi elementi tutte le potenze di 2 fino al termine 2^19.

 

Leonardo Daga's Warehouseâ, http://leonardodaga.insyde.it
Send any Comments to: leonardo.daga@gmail.com