Professional Documents
Culture Documents
A.A. 2007/2008
Introduzione a MATLAB
INTRODUZIONE A MATLAB 1
Indice
1 Introduzione 1
1.1 Caratteristiche di MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Accesso a MATLAB da windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Regole Generali in MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Primi passi 4
2.1 Operazioni di base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Formato di output: il comando format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Il punto e virgola ; sulla riga di comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Costanti e Variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Matrici e vettori 9
4.1 Elementi di matrici e di vettori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2 Funzioni per la costruzione di matrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3 Notazione dei due punti : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4 Matrici estratte e matrici a blocchi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4.1 Matrici estratte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4.2 Matrici a Blocchi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5 Operazioni Matriciali e Puntuali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.6 Risoluzione di Sistemi di Equazioni Lineari . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.7 Altre operazioni sulle matrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.7.1 Operazioni sulle righe e sulle colonne . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5 Grafici 21
5.1 Grafici in 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Grafici in 2D multipli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.3 Cambiare i grafici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.4 Grafici in 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6 Programmazione 25
6.1 Regole Generali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.2 Tipi di m-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.2.1 Files di comandi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.2.2 Files di funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.3 Strutture di controllo del flusso del programma . . . . . . . . . . . . . . . . . . . . . . . . 29
6.3.1 Istruzione for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.3.2 Istruzione if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.3.3 Istruzione while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.4 Operatori logici e operatori relazionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7 Bibliografia 33
1 INTRODUZIONE 1
1 Introduzione
>>
>> min(2,3)
>> 12
>> 10e-12
non e lo stesso di
>> 1 2 % errore
>> 10 e-12 % errore
2 Primi passi
2.1 Operazioni di base
+ addizione
exp log log10
- sottrazione
sin cos tan
* moltiplicazione
asin acos atan
^ potenza
abs sqrt sign
\ divisione a sinistra
round floor ceil
/ divisione a destra
Esempi
' $
>> 2 + 3 >> 2 * 2
ans = ans =
5 4
' $
Regole
Esempi
' $
>> a = 2; A = 3;
>> alfa = 30; conf = pi/180;
>> sin(conf*alfa+A*a)
ans =
0.2381
>> ans^2
ans =
0.0567
& %
Il comando
save fname1 x y z
load fname2 a b
Esempio
' $
>> x = 0:pi/5:2*pi;
>> y = sin(x.^2);
>> t = [ x y ];
>> save io.mat t
>> clear t
>> x = t(:,1);
??? Undefined function or variable t.
>> load io
>> x = t(:,1);
>> y = t(:,2);
& %
>> plot(x,y)
3 SALVARE E LEGGERE DATI IN/DA UN FILE 8
Il comando diary
Il comando
diary nomefile
si usa per creare un diario della sessione di MATLAB nel file (ASCII)
nomefile. A partire da questo comando fino alla introduzione sulla riga
di comando del comando
diary off
tutti i comandi che eseguiamo, cos come i risultati che fornisce MATLAB
(salvo i grafici) saranno salvati nel file nomefile. Dopo, e possibile aprire
tale file e modificarlo con un qualsiasi editor di testo.
4 MATRICI E VETTORI 9
4 Matrici e vettori
A =
1 2 3
4 5 6
7 8 9
>> v1=[ 1, 2, 3, 4 ]
v1=
&1 2 3 4 %
4 MATRICI E VETTORI 10
' $
>> v2=[ 1; 2; 3 ]
v2 =
1
2
3
& %
' $
Esempi
' $
>> a=eye(2)
a =
1 0
0 1
>> b=zeros(2,5)
b =
0 0 0 0 0
0 0 0 0 0
>> c=rand(2,2)
c =
0.0579 0.8132
0.3529 0.0099
& %
4 MATRICI E VETTORI 12
Il comando
' $
Esempi
' $
' $
>> A = [ 1, 3, 0; -1, 2, 1; 2, 5, 4 ];
>> b = [ 7; 3 ; 12 ];
>> x = A \ b
x =
1
2
0
& %
4 MATRICI E VETTORI 17
' $
Esercizi
Definire due vettori riga a e b di 3 elementi.
1. Confronta a.b ab
2. Confronta a\b a/b a.\b a./b
3. Confronta a*b b*a
4 MATRICI E VETTORI 20
' $
>> A = [ 1 2; 3 4];
>> B = [ 5 6; 7 8];
Esercizi
Definire una matrice A 22 e un vettore colonna x di 2 elementi.
5 Grafici
5.1 Grafici in 2D
Esempio:
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1
4 3 2 1 0 1 2 3 4
Provare con:
#
2
y = ex sullintervallo [1.5, 1.5]
x = cos(3t), y = sen(2t) con t [0, 2].
" !
1a FORMA
' $
>>x=0:.01:2*pi; y1=sin(x);
>>y2=sin(2*x);y3=sin(4*x);
>>plot(x,y1,x,y2,--,x,y3,.)
& %
5 GRAFICI 22
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7
2a FORMA
>>x=0:.01:2*pi; Y=[sin(x),sin(2*x),sin(4*x)];
>>plot(x,Y)
Opzioni
hold on permette la modifica dellultimo grafico.
hold off disattiva questa opzione.
Esempio:
' $
>>x=0:.01:2*pi;
>>y1=sin(x);y2=sin(2*x);y(3)=sin(4*x);
>>plot(x,y1)
>>hold on
>>plot(x,y2)
>>plot(x,y3)
>>hold off
& %
5 GRAFICI 23
>>x=0:.01:2*pi; y1=sin(x);
>>y2=sin(2*x);y3=sin(4*x);
>>plot(x,y1,--,x,y2,:,x,y3,+)
& %
Esempi:
1. Scrivere: title(Titolo)
2. Scrivere: gtext(Curva 1) e cliccare con il mouse dove si vuole
che sia posizionato il testo
5 GRAFICI 24
5.4 Grafici in 3D
Esempio:
2 y 2
Graficare z = ex sul dominio [2, 2].
1a FORMA
' $
>>xx=-2:0.1:2;
>>yy=xx;
>>[x,y]=meshgrid(xx,yy);
>>z=exp(-x.^2-y.^2);
>>mesh(z)
& %
2a FORMA
' $
>>[x,y]=meshgrid(-2:0.1:2);
>>z=exp(-x.^2-y.^2);
>>mesh(z)
& %
Altre funzioni per graficare in 3D: plot3, mesh, surf.
6 PROGRAMMAZIONE 25
6 Programmazione
>> cd nome_directory
Files di Comandi
Files di Funzioni
6 PROGRAMMAZIONE 26
>> nome
x=0:.01:2*pi;y1=sin(x);
y2=sin(2*x);y3=sin(4*x);
plot(x,y1,x,y2,--,x,y3,.)
xlabel(X); ylabel(Y)
title(Grafico multiplo)
& %
>> figura
6 PROGRAMMAZIONE 27
6.2.2 Files di funzioni
Regole e Consigli
Esempio 1
' $
% File: rand10.m
% rand10(m,n) produce una matrice m x n
% di numeri random interi tra 0 e 9
function a = rand10(m,n)
a = floor(10*rand(m,n));
& %
Chiamata
>> matrice=rand10(3,4)
Esempio 2
' $
% File: sr2.m
% Funzione esempio con parametri
% di ingresso e di uscita.
% I due parametri di ingresso x e y sono due numeri.
% I due di uscita s e r sono la somma e la differenza
% dei loro quadrati, rispettivamente.
% [s,r]=sr2(x,y)
Chiamata
>> [s,r]=sr2(3,4)
6 PROGRAMMAZIONE 29
' $
x = [];
for i = 1:n
x(i) = i^2;
end
& %
Loop concentrici
for i = 1:m
for j = 1:n
H(i, j) = 1/(i+j-1);
end
end
6 PROGRAMMAZIONE 30
6.3.2 Istruzione if
if n < 0
parita = 0;
elseif rem(n,2) == 0
parita = 2;
else
parita = 1;
end
while relazone
comandi
end
6 PROGRAMMAZIONE 31
Operatori relazionali
Operatori Logici
& e | o ~ non
>> p= sum(B(:))/length(A(:))
p =
0.5333
& %
6 PROGRAMMAZIONE 32
Programma Esempio
' $
function P = mult(A,B)
[mA,nA] = size(A);
[mB,nB] = size(B);
if nA~=mB
error(Matrici di dimensioni inadeguate)
else
P = zeros(mA,nB);
flops(0);
for i=1:mA
for j=1:nB
for k=1:nA
P(i,j) = P(i,j) + A(i,k)*B(k,j);
end
end
end
& %
7 BIBLIOGRAFIA 33
7 Bibliografia