MATrix LABoratory
MATLAB
Sistema software interattivo
per il Calcolo Scientifico che integra
programmazione, calcolo e
visualizzazione
aa 10/11 2
Il Sistema MATLAB è
costituito da
Linguaggio
Ambiente di lavoro
Gestore di grafici
Funzioni matematiche
Programma di interfaccia con le
applicazioni
aa 10/11 3
Come si presenta
Spazio di lavoro
Finestra dei comandi (Command Window)
In questa finestra è possibile inserire i comandi
nel linguaggio di MATLAB
Lista di comandi
aa 10/11 4
help
aa 10/11 5
lookfor
aa 10/11 6
Definizione di variabili
MATLAB come calcolatrice
» a = 2; Il „;‟ inibisce
» -5/(4.8+5.32)^2 l‟output sullo
ans = » b = 5; schermo
-0.0488 » a^b
» (3+4i)*(3-4i) ans = Risultati
ans = 32 assegnati ad
25 “ans” se il
» x = 5/2*pi; nome non è
» cos(pi/2) specificato
» y = sin(x)
ans =
6.1230e-017 y =
» exp(acos(0.3)) 1
( ) parentesi
ans = » z = asin(y) tonde per
3.5470 z = input alle
funzioni
1.5708
aa 10/11 8
Tipo di dato
Il tipo di dato fondamentale in MATLAB è
l‟array bidimensionale
(matrice)
„ ; ‟ separatore di righe
aa 10/11 10
oppure
» a=[1 2
3 4] Parentesi
quadre [ ]
»a =
1 2
3 4
separatore di righe
Colonne
(n)
1 2 3 4 5
A= 4 10 1 6 2 A (2,4)
1 1 6 11 16 21
2
8 1.2 9 4 25
2 7 12 17 22
4 0 0.5 4 5 56
4 9 14 19 24
5 23 83 13 0 10
5 10 15 20 25
aa 10/11 14
Memorizzazione degli array
Matlab memorizza gli array come un unico
vettore colonna, che contiene le colonne
dell‟array aggiunte consecutivamente
1
4
1 2 3 7
a 4 5 6 2
5
7 9
8 8
3
6
9
aa 10/11 15
Esempio
» r=[1 2 3]
r =
1 2 3
» n=[5 6 7];
» r=[r;n]
r =
1 2 3
5 6 7
1 2 3
a 4 5 6
7 8 9
a(1, 1 : 3) oppure a(1,:)
aa 10/11 18
Indirizzamento di parti di
array
1 2 3 4 5
A= 1 6 11 16 21
1 4 10 1 6 2
2 7 12 17 22
2 8 1.2 9 4 25
A(1:5,5) A(1:end,end)
3 8 13 18 23 A(:,5) A(:,end)
3 7.2 5 7 1 11 A(21:25) A(21:end)
A(3,1) 4 9 14 19 24
A(3) 4 0 0.5 4 5 56
5 10 15 20 25
5 23 83 13 0 10
A(4:5,2:3)
A([9 14;10 15])
aa 10/11 19
Cancellazione di righe e colonne
» A=[1 5 9;4 3 2.5; 0.1 10 3i+1]
A =
1.0000 5.0000 9.0000
4.0000 3.0000 2.5000
0.1000 10.0000 1.0000+3.0000i
» A(:,2)=[]
A =
1.0000 9.0000
4.0000 2.5000
0.1000 1.0000 + 3.0000i
» A(2,2)=[]
??? Indexed empty matrix assignment is not allowed.
aa 10/11 20
Esercizi
1.Costruire una matrice A di ordine 4x7
di interi casuali compresi tra -10 e 10
2.Estrarre la prima colonna dalla
matrice
3.Assegnare all‟elemento A22 il valore 5
4.Aggiungere una colonna alla matrice A
• alla fine
• fra la seconda e la terza colonna
aa 10/11 21
Esercizi
•Digitare help colon e cercare di capire dall’aiuto
in linea l’uso del carattere „:‟ per specificare un
incremento di valori con passo costante
•Dati due vettori a e b di uguali dimensioni,
costruire il vettore c le cui componenti di posto
dispari siano uguali alle componenti di a e quelle di
posto pari a quelle di b
Ad es. a =(1, 4, 0, 5) e b=(2, 3, 5, 7) c=(1, 2, 4, 3, 0, 5, 5 ,7)
aa 10/11 23
Funzioni built-in per la manipolazione di
matrici
• transpose (‟): matrice trasposta
• rot90: ruota una matrice di 90°
• tril: parte triangolare inferiore di una matrice
• triu: parte triangolare superiore di una matrice
• dot: prodotto scalare di vettori
• det: determinante di una matrice
• inv: inversa di una matrice
• eig: autovalori ed autovettori
• rank: rango di una matrice
• reshape: ridimensiona la matrice
• ………
aa 10/11 24
Funzioni matematiche elementari
• abs, sign: valore assoluto e funzione segno
• sin, cos, asin, acos…: funzioni trigonometriche
• exp, log, log10: esponenziale e logaritmo
• ceil, floor, fix : arrotondamenti agli interi
• round: arrotondamento all’intero più vicino
• gcd: massimo comun divisore
• lcm: minimo comune multiplo
• sqrt: radice quadrata
• rem: resto della divisione
• real, imag: parte reale e parte immaginaria di
numeri complessi
aa 10/11 25
Funzioni matematiche elementari
aa 10/11 26
Variabili predefinite
aa 10/11 27
esempi
Calcoli che danno risultati infiniti o non definiti
senza che il sistema si blocchi o dia particolari
errori:
>> 1/0
Warning: Divide by zero
ans =
Inf
>> -1/0
Warning: Divide by zero
ans =
-Inf
>> 0/0
Warning: Divide by zero
ans =
NaN
aa 10/11 28
Operazioni su matrici
+ addizione
- sottrazione
aa 10/11 29
Operazioni su array
C=A .*B Cij Aij * Bij
C=A .^B Cij Aij
Bij
Moltiplicazione di array
» a = [1 2 3 4; 5 6 7 8]; [2x4]
» b = [1:4; 1:4]; [2x4]
» c = a.*b [2x4]
c =
1 4 9 16
5 12 21 32 c(2,4) = a(2,4)*b(2,4)
aa 10/11 31
ESEMPIO:
» A=[1 2 2; 2 1 1; 0 3 1];
» A=A ^ 2
A =
5 10 6
4 8 6
6 6 4
» A=[1 2 2; 2 1 1; 0 3 1];
» A=A .^ 2
A =
1 4 4
4 1 1
0 9 1
aa 10/11 32
Variabili logiche o booleane
Associando a :
1 il valore vero
0 il valore falso
oppure
aa 10/11 35
ESEMPIO:
» a=[1 2 3 0 1];
» b=[1 0 0 0 1];
» a & b
ans =
1 0 0 0 1
» ~ans
ans =
0 1 1 1 0
» a|b
ans =
1 1 1 0 1
aa 10/11 36
Operatori relazionali
Si possono utilizzare su tutti i dati dotati di un
ordinamento naturale
< Minore
> Maggiore
<= Minore o uguale
>= Maggiore o uguale
== Uguale
~= Non uguale
aa 10/11 37
Anche questi operatori si comportano come gli operatori
logici quando si opera con array e scalari.
Componenti per cui il risultato dell’operazione è vero
assumono valore 1, quelle per cui è falso assumono valore 0.
ESEMPIO:
» x=2.5
x =
2.5000
» a=2;b=3;
» L=x<=b
L =
1
» L2=x>=a
L2 =
1
» L&L2
ans =
aa 10/11
1 38
ESEMPIO
» Mass = [-2 10 NaN 30 -11 Inf 31];
» pos = Mass>=0
pos =
0 1 0 1 0 1 1
» all_pos = all(Mass>=0)
all_pos =
0
» all_pos = any(Mass>=0)
all_pos =
1
» pos_fin = (Mass>=0)&(isfinite(Mass))
pos_fin =
0 1 0 1 0 0 1
aa 10/11 39
Esercizi
•Dato il vettore x=(1, 34, 2, -12, 56, 7, 0, 9) ,
visualizzare i valori maggiori di 5 (usare la
funzione find)
• Assegnata una matrice A di interi, porre a zero
gli elementi pari, usando la funzione rem o mod
•Dati i vettori x=(1, 2, –1, 3)T e y=(2, 4, -1,6)T
costruire la matrice B=x*yT , determinare il rango
(usare la funzione rank) e motivare la risposta di
Matlab
•Provare che i vettori x=(1, 2, 3, 4), y=(2, 1, 0, 4) e
z=(0, 1, 1, 4) sono linearmente indipendenti
aa 10/11 40
Stringhe
aa 10/11 41
Variabili stringa
Vengono create usando l’apice (') come
delimitatore
» str = 'Ehi, ciao'
str =
Ehi, ciao
» str2 = 'non e'' una bella giornata?'
str2 =
non e' una bella giornata?
» Nome=[‘Giovanna’; ‘Franca ’]
Nome =
Giovanna
Franca
» Nome1= char (‘Giovanna’, ‘Franca’)
Nome1 =
automaticamente
Giovanna
inserisce caratteri bianchi alla fine
Franca delle stringhe più corte
aa 10/11 43
Concatenazione di stringhe
Questa operazione avviene sfruttando la capacità
di MATLAB nella gestione degli array.
ESEMPIO:
Sia Nome la variabile precedentemente definita, allora
l’istruzione:
sottostringhe
» S= [ Nome(1, :) Nome(2, : ) ]
S =
GiovannaFranca
aa 10/11 44
Per lavorare con Array di stringhe
aa 10/11 45
Aritmetica di MATLAB
base Emin
precisione Emax
aa 10/11 46
Visualizzazione dei numeri
Numero Visualizzazione
12.3456789123456 12.3457
123.456789123456 123.4568
1234.56789123456 1.2357e+3
0.00012456789123 1.2346e-4
aa 10/11 48
ESEMPIO: format short e
Numero Visualizzazione
12.3456789123456 1.2346e+1
123.456789123456 1.2346e+2
1234.56789123456 1.2357e+3
0.00012456789123 1.2346e-4
aa 10/11 49
ESEMPIO: format short g
Numero Visualizzazione
12.3456789123456 12.3457
123.456789123456 123.4568
1234.56789123456 1.2357e+3
0.00012456789123 1.2346e-4
aa 10/11 50
ESEMPIO: format long
aa 10/11 51
ESEMPIO: format hex
Visualizza la rappresentazione esadecimale
(base 16) del numero binario in doppia
precisione come rappresentato in memoria.
>> eps
ans = e=971-1023=-52
2.220446049250313e-016
29+28+27+26+23+2+1=971
>> format hex
>> ans esponente
ans =
001111001011
3cb0000000000000
segno
aa 10/11
(1+0.)2(-52) = 2.220446049250313e-016 52
ESEMPIO: format rat
Approssima il valore con una frazione continua
della forma:
n 1
d1
d 1
d2
>> 1/2 1
d3
ans = 1
0.50000000000000
dk
>> format rat
>> ans
ans =
1/2
>> pi
ans =
355/113 non è un numero razionale!
aa 10/11 53
Caricare i dati da un file
aa 10/11 54
Esempio 1:
>> A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> B=[1 2]
B =
1 2
>> save mat_vet A B Crea il file mat_vet.mat
>> clear Cancella il contenuto del
workspace
>> load mat_vet
aa 10/11 55
Esempio 2:
>> A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> B=[0 0 1]
B =
0 0 1
>> save –ascii mat_vet A B Crea il file mat_vet
>> clear Cancella il contenuto del
>> load mat_vet workspace
>> mat_vet
A e B non sono più definite
mat_vet =
1 2 3
4 5 6
0 0 1
aa 10/11 56
load
aa 10/11 58
Da un M-file
Un M-file è un file con estensione .m,
contenente istruzioni in linguaggio Matlab,
che viene eseguito quando si digita nella
command window il nome del file senza
estensione
aa 10/11 59
Esempio:
aa 10/11 60
Con Import Wizard
aa 10/11 61
Esempio:
aa 10/11 62
Funzioni di I/O da file
Sono funzioni a basso livello che permettono
di leggere e scrivere file di dati formattati
con la sintassi del linguaggio C.
fopen
fread
fwrite
fclose
aa 10/11 63