Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduzione allambiente
Matlab
http:// www.dti.supsi.ch/~bucher/matlab.pdf
http://www.dm.unibo.it/ /~guerrini/html/matlab.html
http:// www.dm.unibo.it/ /~guerrini/html/primer.ps
Carla Guerrini
Introduzione Matlab
Carla Guerrini
Cos Matlab?
La struttura di base la matrice per la quale
sono gi predefinite numerosi tipi elementari
(identit, matrice nulla, matrice unit,..) funzioni
algebriche e di manipolazione
Matlab fa largo uso di librerie di calcolo (in
particolar modo di algebra lineare) per risolvere
problemi numerici al calcolatore
E uno dei programmi scientifici di maggior
diffusione, usato nella ricerca e per il calcolo
tecnico e scientifico
Carla Guerrini
Introduzione Matlab
Carla Guerrini
Per iniziare.
Command Window
Carla Guerrini
..
Le istruzioni vengono immesse dal
prompt (seguite da invio) ed eseguite una
ad una
5
Introduzione Matlab
Le istruzioni elementari
Carla Guerrini
Workspace window
Introduzione Matlab
Carla Guerrini
Introduzione Matlab
Carla Guerrini
Introduzione Matlab
Carla Guerrini
Introduzione Matlab
Le informazioni e la memoria
Carla Guerrini
10
Introduzione Matlab
Carla Guerrini
11
Introduzione Matlab
Carla Guerrini
12
Le variabili in Matlab
>> a=5-2
a=
3
>> 5-2
ans =
>> b=7;
3
Carla Guerrini
13
>>who
Your variable are:
abc
Il comando whos d maggiori informazioni sulle variabili in memoria
Il comando clear cancella il contenuto del workspace
Il comando clear seguito dai nomi di alcune variabili (non separati dalla
virgola) cancella soltanto quelle variabili
>> clear
>> clear a b
Carla Guerrini
Introduzione Matlab
Memoria:
>>base=3; altezza=5;
>> base*altezza
ans=
15
Carla Guerrini
14
Introduzione Matlab
15
Variabili predefinite
Tipi di variabili
Introduzione Matlab
Introduzione Matlab
Carla Guerrini
17
>>s=3 ; us=uint8(s);
>>us+4
??? Error using +
Function '+' is not defined for
For values of class uint8
Carla Guerrini
18
Tipi di Variabili
Introduzione Matlab
Carla Guerrini
>>pi
ans=
3.1416
Introduzione Matlab
Carla Guerrini
20
Formato di visualizzazione
Introduzione Matlab
Carla Guerrini
21
Introduzione Matlab
Costruzione di un array
Indicizzazione di un array
Operazioni array-scalari
Operazioni array-array
Funzioni di manipolazione degli array.
Array e utilizzo della memoria.
Scalare: array 1 x 1
Vettore riga: array 1 x n
Vettore colonna: array n x 1
Matrice: array n x m
Carla Guerrini
22
Array
Array
Introduzione Matlab
Carla Guerrini
23
Introduzione Matlab
Carla Guerrini
24
V=[1 7 3 5]
Z=[1;4;5;7]
A=[1 9; 5 -3;0.1
0.3]
vettore colonna
4x1
Matrice 3 x 3
Elemento 7 e
individuato dallindice
2: v(2)
Lelemento 5 e
individuato
dallindice 3 : z(3)
Lelemento 0.1 e
individuato dagli indici
(3,1): A(3,1)
Introduzione Matlab
Carla Guerrini
25
>> b=[2 1 5 4]
b=
2154
>> b=[2, 1, 5, 4]
b=
2154
>> b=[2; 1; 5; 4]
b=
2
1
5
Introduzione
Matlab
4
>> b=[2
1
5
4]
Carla Guerrini
26
Costruzione di array:
>> a=[1:2:9]
a=
13579
>> a=[5:-1:1]
a=
54321
Introduzione Matlab
v=[inizio:incremento:fine]
linspace - elementi
equispaziati
>> linspace(0,pi,11)
ans =
Columns 1 through 7
0 0.3142 0.6283 0.9425
1.2566 1.5708 1.8850
Columns 8 through 11
2.1991 2.5133 2.8274
3.1416
>> a=1:5
a=
12345
>> a=[0:0.1:0.3]
a=
0 0.1000 0.2000
0.3000
Carla Guerrini
27
Introduzione Matlab
Carla Guerrini
28
Costruzione di un array
Costruzione di array
Introduzione Matlab
>> y = [3;4];
B=[1 2; 1 2];
>> C=[y B; 5 6 7]
C= 3 1 2
412
Carla Guerrini
567
29
Introduzione Matlab
Carla Guerrini
30
Introduzione Matlab
Carla Guerrini
32
Indicizzazione di array
Dato un vettore riga o colonna:
Il singolo elemento del vettore si individua indicando lindice fra
parentesi tonda: v(4)
Una porzione dellarray si individua indicando gli indici del primo e
ultimo elemento da considerare: v(2:4)
Data una matrice A m x n:
Per individuare il singolo elemento si usano due indici, il primonriferito
alla riga e il secondo alla colonna
Per ogni dimensione della matrice valgono le regole di
indicizzazione viste per i vettori
Per individuare un blocco di tutti gli elementi di una dimensione
si usa la notazione :
Usando un solo indice si fa riferimento alla matrice come
array di colonne
Introduzione Matlab
Carla Guerrini
31
Operatori algebrici
Introduzione Matlab
Carla Guerrini
A matrice m x n
b scalare 1 x 1
C= A +b
C(i,j)=A(i,j)+b
A=magic(2)
A=
1 3
4 2
>> b=5; C=A+b
C=
6 8
9 7
33
Introduzione Matlab
Carla Guerrini
34
Prodotto SCALARE
n
Introduzione Matlab
Carla Guerrini
35
c= A(k)*B(k)
k=1
Introduzione Matlab
>> D=A.*B
D=
-9 -12 15 0
% i vettori devono avere la stessa
lunghezza
Carla Guerrini
36
Introduzione Matlab
Carla Guerrini
37
Introduzione Matlab
Carla Guerrini
38
39
Introduzione Matlab
Carla Guerrini
40
Introduzione Matlab
Carla Guerrini
10
Dimensioni di un array
Introduzione Matlab
Carla Guerrini
41
Introduzione Matlab
Carla Guerrini
42
Manipolazione di array
Indirizzamento indiretto
L'indirizzamento indiretto
tramite array numerico (ind)
Estrae gli elementi che
hanno quell'indice numerico
Introduzione Matlab
Carla Guerrini
43
Introduzione Matlab
Carla Guerrini
44
11
Manipolazione di array
L'indirizzamento indiretto tramite
array logico estrae gli elementi
che hanno indice logico =1
(true)
N.B. Il vettore [1 1 0 0 0 1 1] non
equivalente ad un vettore
numerico contenente gli stessi
valori
Introduzione Matlab
Carla Guerrini
45
Manipolazione di array
Carla Guerrini
Carla Guerrini
46
allultima colonna
rot90 ruota larray di 90 gradi in
direzione oraria
reshape cambia la dimensione
dellarray mantenendo il numero
degli elementi.
>>Y= RESHAPE(X,M,N) returns the
M-by-N matrix whose elements
are
taken columnwise from X.
An error results if X does not have
M*N elements.
Introduzione Matlab
Introduzione Matlab
47
Introduzione Matlab
Carla Guerrini
48
12
help elfun
Funzioni trigonometriche:
cos, cosh
sin, sinh
tan, tanh
sec, sech
csc, csch
cot, coth
Introduzione Matlab
49
Introduzione Matlab
Il linguaggio di Matlab e un
linguaggio case sensitive, cioe
che distingue fra lettere minuscole e
maiuscole.
Il linguaggio di Matlab e un
linguaggio orientato agli oggetti.
Loggetto fondamentale e larray
(matrice).
Gli oggetti e le istruzioni possono
essere organizzati allinterno
di flussi di controllo delle istruzioni.
Carla Guerrini
51
Funzioni esponenziali:
exp, log, log10, log2
pow2, realsqrt, sqrt
Funzioni complesse:
abs, angle, complex, conj, imag, real
Funzioni dell'algebra lineare
det determinante di una matrice
rank rango di una matrice
eig autovalori di una matrice
inv inversa di una matrice
Introduzione Matlab
Carla Guerrini
Listruzione di assegnazione
I dati possono essere inseriti in
memoria tramite
loperazione di assegnazione.
Loperazione di assegnazione (fatta
utilizzando il simbolo =)
permette di memorizzare un dato che
puo essere un dato
costante, il contenuto di unaltra
variabile oppure il risultato
di unespressione aritmetica.
Sintassi:
variabile = espressione
>> x=5.4;
>>y=x;
>>z=x+y
Introduzione Matlab
max(x), min(x)
elemento massimo o minimo di un
vettore x. Per una matrice
massimo su riga o colonna
50
Assegnazione di unespressione
aritmetica:
Variabile=espressione
In Matlab tutti i calcoli sono fatti
con valori in doppia precisione
(64 bit)
Sintassi
variabile = espressione
Valore= x+2-(y*4)/(x^2)
Carla Guerrini
52
13
Introduzione Matlab
Carla Guerrini
53
Introduzione Matlab
Introduzione Matlab
Carla Guerrini
54
Operatore OR: |
>> A|B
ans =
1 1 1 0 1
% Returns 1 for every element location
that is true (nonzero) in either one or
Ciclo for
Ciclo while
Costrutto if else
Costrutto switch
Carla Guerrini
55
Introduzione Matlab
Carla Guerrini
56
14
Istruzione FOR
Ciclo FOR
Formato
Introduzione Matlab
i=0;
for n=(1:10)'
i=i+1;
x(n)=sin(n*pi/10);
end
plot(n,x)
Carla Guerrini
_________________________
Esempio di codice vettoriale
il ciclo for viene eseguito 1 sola volta
>>i
ans=
1
57
Istruzione FOR
Introduzione Matlab
i=0;
for s = 1.0: -0.1: 0.0
y=exp(s);
plot(s,y,'o')
hold on
i=i+1;
end
_________________________
Nellesempio le 4 istruzioni dentro il
ciclo for sono ripetute 11 volte
>>i
ans=
11
Carla Guerrini
58
Introduzione Matlab
Carla Guerrini
59
Introduzione Matlab
Carla Guerrini
60
15
Struttura condizionale
Introduzione Matlab
Carla Guerrini
While
61
While (II)
Introduzione Matlab
Carla Guerrini
62
Break - Continue
L'istruzione break pu essere utilizzato solo entro un ciclo for o while
permette di terminare l'esecuzione. Quando viene incontrata
l'istruzione break, Matlab salta alla prima istruzione successiva al
end del ciclo in cui compare ( for o while).
Carla Guerrini
63
function d = det(A)
%DET det(A) is the determinant of A.
if isempty(A)
d = 1;
return
else
...
end
Introduzione Matlab
Carla Guerrini
64
16
Struttura selezione
If ...........else
Espressione: contiene
un valore logico
Se = 1 vengono
eseguiti i comandi sino a
else
Se =0 vengono eseguiti i
comandi dopo l'else
Introduzione Matlab
Carla Guerrini
65
Introduzione Matlab
Carla Guerrini
66
67
Introduzione Matlab
Carla Guerrini
68
IF.ELSEIF..ELSE.. END
Se condizione1 vera
Se condizione 2 e' vera
Istruzione 1
Altrimenti
Istruzione 2
Altrimenti
Istruzione 3
Introduzione Matlab
Carla Guerrini
17
Esempi
% Ricerca del massimo fra 3 numeri
disp(inserisci 3 numeri)
a=input(inserisci 1 numero )
b=input(inserisci 1 numero)
c=input(inserisci un numero)
if a>b
if a>c
massimo=a;
else
massimo=c;
end
elseif b>c
massimo=b;
else
massimo=c;
end
disp('il massimo fra i tre
numerica calcolate e"
'),massimo
Introduzione Matlab
SWITCHEND
% Ordinamento di 3 numeri
disp(inserisci 3 numeri)
a=input(inserisci 1 numero )
b=input(inserisci 1 numero)
c=input(inserisci un numero)
SWITCH
Switch tra svariate possibilita secondo il valore dellespressione.
La forma generale e:
SWITCH switch_expr
CASE case_expr,
statement, ..., statement
CASE {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
OTHERWISE,
statement, ..., statement
END
Le istruzioni seguenti il primo CASE ove la switch_expr coincide con case_expr
sono eseguite. Quando case_expr e un cell array (nel secondo caso sopra)
case_expr coincide se un qualsiasi elemento del cell array coincide con switch_expr
Se nessuna delle case_expr coincide con switch_expr allora viene eseguito
OTHERWISE case (se esiste), solo un caso viene eseguito e il calcolo continua dopo
lEND
if a>b
if b>c
ordina=[a,b,c];
elseif c>a
ordina=[c,a,b]
else
ordina=[a,c,b]
end
else
if b>c
if a>c
ordina=[b,a,c];
else
ordina=[b,c,a];
end
else
ordina=[c,b,a];
end
disp('ordine decrescente dei tre
numeri'), ordina
disp('ordine crescente dei tre
Carla Guerrini numeri'),fliplr(ordina)
69
Introduzione Matlab
Carla Guerrini
70
ESEMPIO SWITCH..END
% listruzione lower(stringa)
method = 'Bilinear';
switch lower(method)
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
case 'nearest'
disp('Method is nearest')
otherwise
disp('Unknown method.')
end
% converte il contenuto di
% stringa in caratteri minuscoli
>>Method is linear
Introduzione Matlab
Carla Guerrini
71
Istruzioni equivalenti:
>> somma=sum(v)
>> prodotto=prod(v)
Esempio 3:
>> A=hilb(2)
A=
1.0000 0.5000
0.5000 0.3333
>> sum(A)
ans =
1.5000 0.8333
>> prod(A)
ans =
0.5000 0.1667
% Nel caso di matrici la somma e il
prodotto viene eseguito sui vettori
colonna che compongono la matrice per
cui viene restituito un vettore riga
Carla Guerrini
72
18
Introduzione Matlab
Carla Guerrini
M-file function
Con questa struttura posso costruire delle
nuove funzioni/istruzioni Matlab
possono accettare argomenti in ingresso
73
Introduzione Matlab
Carla Guerrini
74
Introduzione Matlab
Carla Guerrini
76
Carla Guerrini
75
19
Carla Guerrini
77
Introduzione Matlab
78
Help
I commenti sono parole inserite dal programmatore per dare
informazioni che rendano pi comprensibile il programma
I commenti iniziano con % e terminano con la fine della riga; se i
commenti occupano pi righe occorre mettere il % allinizio di
ciascuna riga
Sono ignorati durante lesecuzione del programma
Sintassi:
% parole di commento.....
La punteggiatura
Il simbolo ; alla fine di un comando sopprime la visualizzazione
delloutput del comando
Due o piu comandi possono essere scritti sulla stessa riga separati da
,o;
Introduzione Matlab
Carla Guerrini
79
Introduzione Matlab
Carla Guerrini
80
20
Riga di definizione:
La prima riga di intestazione definisce il nome della function il numero e lordine delle variabili
in ingresso e uscita
Introduzione Matlab
Carla Guerrini
81
Introduzione Matlab
Carla Guerrini
82
Riga h1
E la prima riga del testo di help
Siccome una riga di commento inizia con %
Testo di help serve per creare un aiuto in linea per la propria
funzione introducendo una o pi righe di commento
immediatamente dopo la riga H1
>> help rettangolo
Corpo della Function
Contiene le istruzioni per il calcolo e lassegnazione dei valori
alle variabili di output
Le istruzioni possono essere:
chiamate di unaltra function
input/output interattivi
calcoli
assegnazioni
commenti
linee bianche
Una funzione termina dopo che lultima riga nel file eseguita
oppure quando incontrato il comando return.
Introduzione Matlab
Carla Guerrini
83
Introduzione Matlab
Carla Guerrini
84
21
Variabili locali
Le variabili che non sono nella lista delle variabili di input e nemmeno in
quella delle variabili di output sono dette variabili locali e non compaiono
nello spazio di lavoro
Le variabili locali vengono automaticamente cancellate dalla memoria al
termine dellesecuzione
LM-file deve essere denominato col nome della funzione ed
avere estensione .m (rettangolo.m) In realt, Matlab richiama la funzione sulla
base del nome del file e non del nome della function.
E necessario assegnare dei valori ai parametri di output
Per poter utilizzare una funzione allinterno di uno script, il file deve essere
nella directory dello script.
Chiamata di una funzione
Carla Guerrini
85
Introduzione Matlab
Carla Guerrini
86
Carla Guerrini
87
Introduzione Matlab
Carla Guerrini
88
22
Function handles
Function handle un tipo Matlab che contiene tutte le indicazioni utili per
eseguire una funzione.
Sintassi per costruire l'handle della funzione:
handle_name = @functionname
E possibile eseguire una funzione utilizzando il suo handle.
Lhandle viene utilizzato esattamente come se fosse il nome della funzione.
Sin(0.6*pi)
Ans =
0.9511
>>f=@sin
>>f(0.6*pi)
Ans = 0.9511
Introduzione Matlab
Carla Guerrini
89
Introduzione Matlab
Carla Guerrini
90
Introduzione Matlab
Carla Guerrini
91
Introduzione Matlab
Carla Guerrini
92
23
Introduzione Matlab
Carla Guerrini
93
Introduzione Matlab
Carla Guerrini
94
Introduzione Matlab
Carla Guerrini
95
Introduzione Matlab
Carla Guerrini
96
24
fprintf
Simile alla funzione del linguaggio C
Sintassi:
fprintf(formato)
count=fprintf(formato,variabili)
fprintf(Attenzione: x negativa \n)
fprintf(%s ha %d anni\n,nome,anni)
La stringa formato contiene i codici e i caratteri opzionali per costruire la
stringa di output
count e il numero di elementi scritti
Caratteri di conversione:
%d notazione decimale per interi con segno
%i notazione decimale per interi
%f floating poit per reali
%e notazione esponenziale per i reali
E possibile specificare la lunghezza del campo e per variabili numeriche il
numero di decimali:
fprintf(%f\n,sqrt(2)),
fprintf(%e\n,sqrt(2)), fprintf(%8.4f\n,sqrt(2), fprintf(%12.3\n,sqrt(2))
Introduzione Matlab
Carla Guerrini
97
Introduzione Matlab
Carla Guerrini
98
Introduzione Matlab
Carla Guerrini
99
Introduzione Matlab
Carla Guerrini
100
25
Grafici bidimensionali
Introduzione Matlab
Carla Guerrini
101
Introduzione Matlab
Carla Guerrini
102
plot(vettore1,vettore2,opzioni)
Introduzione Matlab
Carla Guerrini
103
Introduzione Matlab
Carla Guerrini
104
26
Introduzione Matlab
Carla Guerrini
105
Introduzione Matlab
Carla Guerrini
106
Introduzione Matlab
Carla Guerrini
107
Introduzione Matlab
Carla Guerrini
108
27
Introduzione Matlab
Carla Guerrini
109
Introduzione Matlab
Carla Guerrini
110
Introduzione Matlab
Carla Guerrini
111
Introduzione Matlab
Carla Guerrini
112
28
fplot(function,limits)
>>fplot(x^3-1,[-1 1])
axis([xmin, xmax, ymin, ymax]) pone limiti definiti da
xmin, xmax,ymin, ymax per gli assi
Carla Guerrini
113
Introduzione Matlab
Carla Guerrini
114
Introduzione Matlab
Carla Guerrini
116
Introduzione Matlab
Carla Guerrini
115
29
Introduzione Matlab
Carla Guerrini
117
Introduzione Matlab
Carla Guerrini
118
Introduzione Matlab
Carla Guerrini
119
Introduzione Matlab
Carla Guerrini
120
30
Esportare grafici:
Dal menu File -- Save as
scegliere poi il formato desiderato
DEMO:
>>demo matlab graphics
Introduzione Matlab
Carla Guerrini
121
31