In MATLAB ci sono dellevariabili il cui valore è predefinito (ma può comunque essere modificato dall'utente). Esse sono:
- i,j:unità immaginaria in unnumero complesso
- pi: approssimazione dipi greco, π
- eps: precisione di macchina del computer che si sta utilizzando
- realmax: è il massimonumero reale positivo rappresentabile
- realmin: è il minimo numero reale positivo rappresentabile
- inf: è un numero maggiore di realmax, ∞, infinito
- -inf: è un numero minore di realmin, -∞, meno infinito
- version: il numero della versione di MATLAB utilizzata
- computer: una sigla che indica il tipo di computer utilizzato. Esempio: PCWIN
- ans: ultimo risultato dell'ultima operazione eseguita
- NaN: "Not a number" , indica il risultato di una forma matematica indeterminata o non definita (es. ∞/∞ oppure 0/0)
Contrariamente a numerosi altri linguaggi, che, all'atto della dichiarazione di una variabile, necessitano di un'indicazione esplicita del "tipo" di cui essa deve essere, per dichiarare una variabile in MATLAB è sufficiente scrivere il nome della variabile seguito dall'operatore "=" e dal valore numerico o alfabetico che si vuole assegnare alla variabile. Nel caso in cui si tratti di testo è necessario inserirlo tra gli apici:
var1=1var2='abc'
Se non si vuole visualizzare il valore della variabile appena dopo averla dichiarata (come normalmente avviene) si deve terminare l'assegnamento con un punto e virgola:
var3=1234;var4='abcdef';
Quando si assegna una variabile numerica, sia essa una costante, un vettore, o una matrice, MATLAB la interpreta sempre e comunque come una matrice; ad esempio una costante è una matrice 1x1, un vettore è una matrice 1xl, cioè una riga di l elementi.
È importante notare che MATLAB ècase sensitive, per esempio:
v=1V=1
risultano due variabili distinte.
Per definire un numero complesso, esso va dichiarato scrivendolo in forma algebrica:
c=4+9*i
Per resettare, cancellare, il contenuto di una variabile si utilizza il comando
clear (nome_variabile)
per le variabili predefinite questo comando ripristina il valore di default, altrimenti se sono altre variabili esse vengono eliminate dalla workspace. Omettendo il nome dalla variabile,
clear
viene effettuata la pulizia di tutta la workspace.
N.B.: di default le variabili numeriche dichiarate sono tutte di tipo double (floating point in doppia precisione).
Per creare una matrice si procede in modo simile alle variabili per quanto riguarda l'assegnamento, racchiudendo la matrice tra parentesi quadre, separando gli elementi di una stessa riga con una virgola e le righe con un punto e virgola.
M1=[1 2 3 4;5 6 7 8;9 10 11 12]M2=[13,14,15;16,17,18]M3=['a',19,'b';20,'c',21]
In alternativa a virgole e punti e virgole si possono usare, rispettivamente, spazi e a-capo. In questo modo la rappresentazione di una matrice assomiglia a quella tradizionale dell'algebra:
M4=[ 1 2 3 4 5 6 7 8 9 ];
Nel creare una matrice si possono anche utilizzare variabili dichiarate in precedenza
M4=[var1 var2;var3 var4]
ed è inoltre possibile definire le matrici per parti, ad esempio in una matrice M 3 x 3, i comandi
M(1,1:3)=[a1 b1 c1];M(2,1:3)=[a2 b2 c2];M(3,1:3)=[a3 b3 c3];
consentono di assegnare alla prima riga i valori, precedentemente definiti, a1, b1 e c1, alla seconda a2, b2 e c2 e così via.
Un altro modo per una dichiarazione veloce di matrici è l'uso dell'operatore di sequenza:
Sintassi: M= inizio:incremento:fine | inizio:fine
anche in questo caso, se si omette l'incremento, per default è 1. Esempio:
M=[1:2:7;4:2:10;7:2:13]M= 1 3 5 7 4 6 8 10 7 9 11 13
Per selezionare un elemento di una matrice, utilizziamo la seguente istruzione:
M(indice_riga, indice_colonna)M(l,k) dove l,k
selezionano l'elemento che si trova in riga l-esima e colonna k-esima
È possibile estrarre anche intere colonne o righe. Supponiamo di avere una matrice M con m x n elementi, in generale:
M(l,:) , estrae l'intera riga l-esima in un vettore riga con m elementiM(:,k) , estrae l'intera colonna k-esima in un vettore colonna con n elementiM(:) , estrae l'intera matrice
Per eliminare la colonna di una matrice M:
M(:,k)=[] ,elimina la colonna k-esima, la matrice M diventa nx(m-1)
Si elenca ora una serie di operazioni molto utili per lavorare con le matrici in ambiente MATLAB.
Sia A una generica matrice m x n, con il comando
size(A)
si ottiene un vettore composto dal numero di righe e dal numero di colonne della matrice A (questo è estendibile anche a matrici con più di due dimensioni).
Con l'operatore ' (apostrofo), si ottiene la matricetrasposta di A:
A'
questo comando è utile per trasformare un vettore riga in un vettore colonna e viceversa.
Con il comando
sum(A)
si ottiene un vettore riga composto dallasomma di ogni colonna di A.
Con il comando
det(A)
si ottiene il determinante della matrice A.
Con il comando
poly(A)
si ottiene un vettore contenente i coefficienti del polinomio caratteristico di A.
Se A è una matrice quadrata, con il comando:
eig(A)
si ottiene un vettore colonna composto dagliautovalori di A.
Con il comando:
diag(A)
si ottiene un vettore colonna composto da tutti gli elementi delladiagonale principale di A. Se A fosse un vettore, si otterrebbe invece una matrice diagonale con gli elementi di tale vettore.
Con il comando
trace(A)
si ottiene latraccia di A, cioè la somma degli elementi della diagonale principale.
Con il comando
fliplr(A)
si ottiene una nuova matrice, ma conl'ordine delle colonne invertito.
Con il comando
inv(A)
si ottiene lamatrice inversa di A.
Uno strumento molto potente che l'ambiente MATLAB offre per rappresentare dati numerici è la possibilità di realizzare ilgrafico di una funzione. In particolare, dati due vettori x e y con uguale numero di elementi, è possibile tracciare il grafico di y in funzione di x con il comando
plot(x,y)
Si fa notare che il comando plot non solo disegna y in funzione di x ma crea automaticamente anche un'interpolazione lineare dei valori assunti dalla funzione (dato che ovviamente nessuna funzione memorizzata in un calcolatore è continua).
È possibile includere opzioni aggiuntive come il colore o il tipo di linea seguendo la seguente sintassi:
plot(x,y,'marcatore stile colore')
dove il marcatore sta ad indicare in che modo i punti dei due vettori saranno rappresentati (ad esempio: +, *, o, x), lo stile è lo stile della linea (è possibile scegliere tra linea continua, tratteggiata, tratto punto ed altri ancora: -, - -, :, -.) che unirà i punti e il colore è quello del grafico, contrassegnato con l'iniziale in inglese del colore scelto (ad esempio per avere un grafico verde si dovrà digitareg, iniziale digreen). È da notare che se si assegna un marcatore al comando plot, questo non effettuerà più l'interpolazione lineare automatica tra i punti della funzione, ma si limiterà a rappresentare i singoli punti.
Allo stesso modo, con il comando plot, è possibile disegnare una matrice quadrata:
plot(A)
Per disegnare grafici multipli nello stesso quadro è possibile seguire la seguente sintassi:
plot(x1,y1,'msc',x2,y2,'msc',...)
dove y1=f(x1), y2=f(x2), e così via, rappresentano le funzioni da rappresentare, oppure utilizzare il comando
hold on
che fa sì che, se c'è un grafico attivo, questo non venga chiuso e il successivo plot si sovrapponga ad esso.
Con il comando:
title('testo')è possibile assegnare un titolo al grafico, mentre con i comandi
xlabel('testo')ylabel('testo')è possibile invece assegnare un nome ai valori dell'asse delle ascisse e delle ordinate.
Il comando
grid
aggiunge una griglia al grafico corrente.
È possibile in modo molto semplice disegnare diversi grafici nella stessa finestra. Per fare ciò si usa il comando
subplot(m,n,p)
Con tale comando si disegnano in una finestra m x n grafici. Il comando subplot va inserito subito prima del comando plot, e la variabile p rappresenta il numero del grafico da disegnare, contando lungo le righe da sinistra a destra. Ad esempio se si sta lavorando su una finestra con 3 righe e 4 colonne di grafici e si vuole disegnare il secondo grafico della seconda riga, si scrive:
subplot(3,4,6)
Con il comando
axis([xi xf yi yf])
è possibile impostare la porzione di grafico da visualizzare, indicando con xi l'ascissa iniziale, xf l'ascissa finale, yi l'ordinata iniziale e yf l'ordinata finale. Si fa notare che vanno inseriti fra parentesi quadre perché la funzione axis richiede un vettore in ingresso, quindi è ovviamente possibile dichiarare all'esterno tale vettore e fornirlo come argomento:
axis(V)