Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il...

35
Laboratorio del Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate A.A. 2007/2008 Introduzione a MATLAB

Transcript of Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il...

Page 1: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

Laboratorio del Dipartimento di

Metodi e Modelli Matematici per le Scienze Applicate

A.A. 2007/2008

Introduzione a MATLAB

Page 2: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

INTRODUZIONE A MATLAB 1

Indice

1 Introduzione 11.1 Caratteristiche di MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Accesso a MATLAB da windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 Regole Generali in MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Primi passi 42.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

3 Salvare e leggere dati in/da un file 7

4 Matrici e vettori 94.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 215.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 256.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

Page 3: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

1 INTRODUZIONE 1

1 Introduzione

MATLAB =⇒ MATrix LABoratory

1.1 Caratteristiche di MATLAB

• Programma di Calcolo Numerico e Calcolo Simbolico.

– Si puo considerare come una calcolatrice programmabile molto

potente.

• Programma molto popolare tra studenti, ingegneri, tecnici e

ricercatori per le sue caratteristiche:

– Programma interattivo.

– Capacita Grafiche potenti e semplici.

– Possiede un gran numero di Funzioni di tutti i tipi.

– Linguaggio di programmazione di alto livello simile a

Fortran, C, Pascal o Basic, pero piu facile da imparare.

• Esistono versioni del programma MATLAB da piccoli PC fino a

supercomputers.

Page 4: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

1 INTRODUZIONE 2

1.2 Accesso a MATLAB da windows

1. Cliccare due volte con il bottone sinistro del mouse sull’icona di

Matlab nel Desktop.

2. Apparira una finestra con il prompt :

>>

3. Creare una directory sulla penna USB (che supponiamo in E)

>> mkdir E:\nome_directory

>> cd E:\nome_ directory

Page 5: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

1 INTRODUZIONE 3

1.3 Regole Generali in MATLAB

• MATLAB distingue tra maiuscole e minuscole

>> min(2,3)

NON e lo stesso di:

>> MIN(2,3) % errore

• Gli spazi HANNO significato in matlab =⇒ separano elementi

distinti in una matrice;

>> 12

>> 10e-12

non e lo stesso di

>> 1 2 % errore

>> 10 e-12 % errore

• Le PARENTESI TONDE ( ) e le PARENTESI QUA-

DRATE [ ] hanno significati diversi.

• Le Frecce: ↑ y ↓ permettono di recuperare comandi.

• Le Frecce: ← y → permettono di correggere gli errori.

• Per avere AIUTO nell’ambiente MATLAB si utilizza il comando

help:

>> help help

>> help for

>> help plot

Page 6: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

2 PRIMI PASSI 4

2 Primi passi2.1 Operazioni di base

+ addizione

- sottrazione

* moltiplicazione

^ potenza

\ divisione a sinistra

/ divisione a destra

exp log log10

sin cos tan

asin acos atan

abs sqrt sign

round floor ceil

Esempi

'

&

$

%

>> 2 + 3 >> 2 * 2

ans = ans =

5 4

>> 2/6 >> 2\6

ans = ans =

0.3333 3

>> 3*(log10(14.7) - 4/6)/atan(2.3)

ans =

1.2940

>> 1+2i >> abs(4+3j)

ans = ans =

1.0000+2.0000i 5

Page 7: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

2 PRIMI PASSI 5

2.2 Formato di output: il comando format

Possiamo cambiare il modo in cui i risultati numerici sono presentati

usando il comando format.

'

&

$

%

>> pi >> format long

ans = >> pi

3.1416 ans =

3.14159265358979

>> format short e >> format long e

>> pi >> pi

ans = ans =

3.1416e+00 3.141592643589793e+00

>> format bank >> format

>> pi >> pi

ans = ans =

3.14 3.1416

2.3 Il punto e virgola ; sulla riga di comando

Sulla riga di comando si usa il punto e virgola ; alla fine di una

istruzione affiche MATLAB non scriva sullo schermo il risultato cor-

rispondente. Questo NON vuol dire che l’operazione non sia stata

eseguita.

Page 8: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

2 PRIMI PASSI 6

2.4 Costanti e Variabili

Regole

• Possiamo definire costanti e variabili mediante nomi.

• Il nome consiste in una lettera seguita da altre lettere, cifre o

sottolinee, fino a un massimo di 31 caratteri in tutto.

• MATLAB distigue tra MAIUSCOLE e minuscole.

• Le variabili si possono cancellare con clear nome.

Esempi

'

&

$

%

>> a = 2; A = 3;

>> alfa = 30; conf = pi/180;

>> sin(conf*alfa+A*a)

ans =

0.2381

>> ans^2

ans =

0.0567

Se non diamo un nome a una espressione si crea automaticamente la

variabile ans con cui si possono eseguire operazioni posteriormente.

Page 9: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

3 SALVARE E LEGGERE DATI IN/DA UN FILE 7

3 Salvare e leggere dati in/da un file

• Il comando

save fname1 x y z

salva le variabili x, y e z in un file (binario) di nome fname1.mat

(MAT-files).

• Il comando

load fname2 a b

legge le variabili a e b da un file (binario) di nome fname2.mat. In

fname2.mat potrebbero essere presenti altre variabili oltre ad a e b.

• E possibile anche salvare/leggere dati in/da files ASCII: si veda al

proposito l’opzione -ascii dei comandi load e save.

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)

Page 10: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

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.

Page 11: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 9

4 Matrici e vettori

Matrice: Collezione di numeri ordinati per file

e per colonne.

• Le matrici si definiscono con parentesi quadrate [ ].

• Gli elementi di una stessa riga si separano con virgole o spazi.

• Per indicare la fine di una riga e l’inizio della seguente si usa il

punto e virgola.

• Un vettore riga di n elementi e una matrice 1× n.

• Un vettore colonna di n elementi e una matrice n× 1.

• Uno scalare e una matrice 1× 1.'

&

$

%

>> A = [ 1 2 3; 4 5 6; 7 8 9 ]

A =

1 2 3

4 5 6

7 8 9

>> v1=[ 1, 2, 3, 4 ]

v1=

1 2 3 4

Page 12: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 10

'

&

$

%

>> v2=[ 1; 2; 3 ]

v2 =

1

2

3

>> size(A) >> size(v1)

ans = ans =

3 3 1 4

>> size(v2) >> length(v1)

ans = ans =

3 1 4

4.1 Elementi di matrici e di vettori

• Per estrarre l’elemento Aij da una matrice A si scrive

A(i,j).

• Per estrarre l’elemento vk di un vettore v si scrive v(k).

'

&

$

%

>> A(2,3) >> v1(2)

ans = ans =

6 2

Page 13: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 11

4.2 Funzioni per la costruzione di matrici

eye(n) matrice identita di dimensioni n× n

zeros(m,n) matrice di zeri di dimensioni m× n

ones(m,n) matrice di 1 di dimensioni m× n

diag(v) matrice diagonale con diagonale {vk}k=1...n

rand(m,n) matrice di numeri random di dimensioni m× n

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

>> d=diag([-1, 1])

d =

-1 0

0 1

Page 14: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 12

4.3 Notazione dei due punti :

L’operatore : e uno dei piu importanti in MATLAB. Appare in diversi

contesti:

• Per creare una riga di elementi equidistanti:

>> v1= 1:10

v1 =

1 2 3 4 5 6 7 8 9 10

>> v2= 100:-7:50

v2 =

100 93 86 79 65 58 51

>> v3= 0:pi/4:pi

v3 =

0 0.7854 1.5708 2.3562 3.1416

• Per estrarre la riga i–esima di una matrice A si scrive

A(i,:).

• Per estrarre la colonna j–esima di una matrice A si scrive

A(:,j).

• Per eliminare la riga (colonna) i–esima di una matriz A si

scrive A(i,:)=[] (A(:,i)=[]).

• Per scrivere una matrice A di dimensioni m×n come un vettore

colonna di mn elementi si scrive A(:)

Page 15: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 13

4.4 Matrici estratte e matrici a blocchi

4.4.1 Matrici estratte

• Il comando

A([i1, i2, ..., ir], [j1, j2, ..., js])

estrae la matrice formata dalle righe i1, i2,. . ., ir e le colonne j1,

j2,. . ., js della matrice A.

• Il comando A([i1, i2, ..., ir],:) estrae la matrice formata dalle

righe i1, i2,. . ., ir della matrice A.

• Il comando A(:,[j1, j2, ..., js]) estrae la matrice formata dalle

colonne j1, j2,. . ., js della matrice A.

'

&

$

%

>> A = [1:2:5 ; 1:4:9 ; 1:0.1:1.2]

A =

1.0000 3.0000 5.0000

1.0000 5.0000 9.0000

1.0000 1.1000 1.2000

>> B=A(1:2,[2 3]) >> C=A([2 1],:)

B = C =

3 5 1 5 9

5 9 1 3 5

Page 16: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 14

4.4.2 Matrici a Blocchi

Supponiamo di avere una matrice A di dimensioni m × n definita a

blocchi, per esempio,

A =

[

A11 A12

A21 A22

]

,

dove A11, A12, A21 y A22 sono blocchi di dimensioni p× r, p× s, q× r

e q × s rispettivamente, tali che p + q = m e r + s = n. Supponiamo

anche di aver gia definito questi blocchi in MATLAB e di averli salvati

nelle variabili A11, A12, A21 e A22 rispettivamente. Allora, possiamo

scrivere la matrice A come

>> A=[ A11, A12; A21, A22 ];

Esempi'

&

$

%

>> A11 = [ 1 2; 3 4]; A12 = eye(2);

>> A21 = [ -1 0; 0 -1]; A22=ones(2);

>> A = [ A11 A12; A21 A22 ]

A =

1 2 1 0

3 4 0 1

-1 0 1 1

0 -1 1 1

Page 17: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 15

4.5 Operazioni Matriciali e Puntuali

Operatori Matriciali Operatori Puntuali

+ somma + somma

− differenza − differenza

∗ moltiplicazione .∗ moltiplicazione

/ divisione a destra ./ divisione a destra

\ divisione a sinistra .\ divisione a sinistra

ˆ potenza .ˆ potenza

’ trasposta

• Gli operatori matriciali sono quelli definiti in Algebra

Lineare.

• Gli operatori puntuali agiscono elemento per elemento.

Operano tra matrici con le stesse dimensioni. Il risultato e

un altra matrice della stessa grandezza.

• Le funzioni di MATLAB (sin, cos, tan, exp, log, sqrt,

abs, ...) quando applicate ad una matrice operano elemento

per elemento.

Page 18: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 16

4.6 Risoluzione di Sistemi di Equazioni Lineari

A Matrice Quadrata n× n. (e invertibile!)

x=A\b =⇒ Soluzione di A ∗ x = b (x e b vettori colonna)

x=b/A =⇒ Soluzione di x ∗ A = b (x e b vettori riga)

'

&

$

%

>> A = [ 1, 3, 0; -1, 2, 1; 2, 5, 4 ];

>> b = [ 7; 3 ; 12 ];

>> x = A \ b

x =

1

2

0

Page 19: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 17

4.7 Altre operazioni sulle matrici

inv(A) inversa della matrice quadrata A

pinv(A) pseudoinversa (Moore-Penrose) di A

det(A) determinante della matrice quadrata A

rank(A) rango della matrice A

[n,m] = size(A) dimensioni della matrice A

tril(A) parte triangolare inferiore di A

triu(A) parte triangolare superiore di A

trace(A) traccia della matrice A

null(A) base ortogonale del nucleo di A

orth(A) base ortogonale della immagine di A

[L,U,P] = lu(A) fattorizzazione LU di A: P*A = L*U

R=chol(A) fattorizzazione Cholesky di A: A = R’*R

[S,D] = eig(A) autovettori/autovalori di A: A*S = S*D

poly(A) coefficienti del polinomio caratteristico

[U,T]=schur(A) fattorizzazione Schur di A: A = U’*T*U

[Q,R] = qr(A) fattorizzazione QR di A: Q*R = A

[U,S,V] = svd(A) SVD de A: U*S*V’ = A

norm(A,p) norma p=1,2 de A

norm(A,inf) norma ∞ de A

norm(A,’fro’) norma di Frobenius di A

cond(A,p) fattore di condizionamiento in norma p di A

Page 20: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 18

4.7.1 Operazioni sulle righe e sulle colonne

• Per scambiare le righe i–esima e j–esima di una matrice A

si scrive

>> A([i j],:) = A([j i],:);

• Per scambiare le colonne i–esima e j–esima di una matrice

A si scrive

>> A(:,[i j]) = A(:,[j i]);

• Per inserire una riga vr (vettore riga) tra le righe k–esima e

(k + 1)–esima di una matrice A m× n si scrive

>> A = [ A(1:k,:); vf; A(k+1:m,:)];

• Per inserire una colonna vc (vettore colonna) tra la colonna

kesima e (k + 1)–esima di una matrice A m×n si scrive

>> A = [ A(:,1:k), vc, A(:,k+1:n)];

Page 21: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 19

Esempi con vettori

'

&

$

%

>> a = [1 2]; b = [3 4];

>> a+b

>> a-b

>> a-1

>> b-2

>> 3*a

>> a/2

>> c = a*b

??? Error using ==> *

Inner matrix dimensions must agree.

>> c = a.*b

c =

3 8

>> d = a*b’

d =

11

Esercizi

Definire due vettori riga a e b di 3 elementi.

1. Confronta a.ˆb aˆb

2. Confronta a\b a/b a.\b a./b

3. Confronta a*b’ b’*a

Page 22: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

4 MATRICI E VETTORI 20

Esempi con matrici

'

&

$

%

>> A = [ 1 2; 3 4];

>> B = [ 5 6; 7 8];

>> C = A*B >> D = A.*B

C = D =

19 22 5 12

43 50 21 32

>> E = B.^A >> F = A.^3

D = F =

5 36 1 8

343 4096 27 64

>> G = [ 0 pi/6; pi/2 pi];

>> H = sin(G)

H =

0.0000 0.5000

1.0000 0.0000

Esercizi

Definire una matrice A 2×2 e un vettore colonna x di 2 elementi.

1. Confronta A.ˆ2 Aˆ2 A*x x*A

2. Calcola sin(A) cos(x)*(A+1)

3. Confronta A\x x/A

Page 23: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

5 GRAFICI 21

5 Grafici

5.1 Grafici in 2D

Rappresentazione dei vettori x e y.

>> plot(x,y)

Esempio:��

� >>x=-4:.01:4; y=sin(x); plot(x,y)

−4 −3 −2 −1 0 1 2 3 4−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Provare con:#

"

!• y = e−x2

sull’intervallo [−1.5, 1.5]

• x = cos(3t), y = sen(2t) con t ∈ [0, 2π].

5.2 Grafici in 2D multipli

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,’.’)

Page 24: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

5 GRAFICI 22

0 1 2 3 4 5 6 7−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

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 dell’ultimo 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

Page 25: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

5 GRAFICI 23

5.3 Cambiare i grafici

• Cambiare stile di linea, colore, ecc.:

'

&

$

%

>>x=0:.01:2*pi; y1=sin(x);

>>y2=sin(2*x);y3=sin(4*x);

>>plot(x,y1,’--’,x,y2,’:’,x,y3,’+’)

Digitare help plot per info su stili di linea e di colore

• grid disegna un reticolato quadrato sul grafico.

• Estremi della finestra grafica:

axis([xmin,xmax,ymin,ymax])

axis fissa gli estremi attuali.

Scrivendo axis auto torniamo agli estremi di default.

• Aggiungere titoli ed etichette:

title titolo del grafico

xlabel etichetta dell’asse x

ylabel etichetta dell’asse y

gtext testo posizionato interattivamente

text testo posizionato mediante coordinate

• Esempi:

1. Scrivere: title(’Titolo’)

2. Scrivere: gtext(’Curva 1’) e cliccare con il mouse dove si vuole

che sia posizionato il testo

Page 26: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

5 GRAFICI 24

5.4 Grafici in 3D

• meshgrid(xx,yy) crea un reticolato a partire dai vettori xx e yy

• mesh(xx,yy,z) rappresenta la funzione z(xx, yy) sul reticolato

Esempio:

Graficare z = e−x2−y2sul 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.

Page 27: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

6 PROGRAMMAZIONE 25

6 Programmazione

MATLAB permette l’esecuzione di files di comandi detti m-

files.

nome.m

6.1 Regole Generali

• I file devono essere in formato ASCII.

MAI formato Word, WordPerfect, Write, ecc.

• MATLAB deve sapere la directory di lavoro (dove stanno i files).

A tal proposito usare il comando:

>> cd nome_directory

• Il simbolo di percentuale % si usa per commenti. E importante

commentare i files indicando il loro scopo.

6.2 Tipi di m-files

• Files di Comandi

• Files di Funzioni

Page 28: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

6 PROGRAMMAZIONE 26

6.2.1 Files di comandi

• Sequenza di comandi dentro un m-file.

• Per eseguirne uno chiamato nome.m:

>> nome

• Sono molto utili, infatti permettono di depurare y riutilizzare

sequenze di comandi facilmente.

• Le righe di commenti % saranno mostrate se si scrive:

>> help nome

Esempio : File figura.m'

&

$

%

% File esempio di m-file

% Genera la figura di 5.2

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

Page 29: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

6 PROGRAMMAZIONE 27

6.2.2 Files di funzioni

• Questi files creano nuove funzioni definite dall’utente.

• Una volta create, si possono utilizzare come una funzione

interna di MATLAB.

Regole e Consigli

• File ASCII con estensione .m (m-file).

• Cominciare sempre con commenti (%).

• La prima parola dopo i commenti deve essere:

function

• Il nome della funzione deve essere lo stesso nome del file senza

estensione .m

• I parametri di ingresso devono essere gli argomenti della

funzione, chiusi tra parentesi ().

• I parametri di uscita vanno davanti al nome della funzione.

• Si possono mettere righe in bianco dovunque.

• Le variabili definite dentro il file sono locali, cioe, valgono solo

dentro la funzione, fuori non esistono.

• I nomi dei parametri di ingresso e di uscita sono variabili mute,

cioe, il loro nome puo essere qualsiasi.

Page 30: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

6 PROGRAMMAZIONE 28

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)

function [out1,out2] = sr2(in1,in2)

out1=in1.^2+in2.^2;

out2=in1.^2-in2.^2;

Chiamata

��

��>> [s,r]=sr2(3,4)

Page 31: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

6 PROGRAMMAZIONE 29

6.3 Strutture di controllo del flusso del programma

Permettono di cambiare l’ordine di esecuzione sequenziale dei

comandi (uno dietro l’altro) in un programma.

6.3.1 Istruzione for

Ripete un insieme di comandi un determinato numero di volte.

for i= vettore riga di indici

istruzioni(i)

end

'

&

$

%

x =[]; for i = 1:n, x(i)=i^2, end

oppure

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

Page 32: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

6 PROGRAMMAZIONE 30

6.3.2 Istruzione if

I comandi verranno eseguiti solo se la relazione e vera

if relazione

comandi

end

Espressioni piu complicate

if n < 0

parita’ = 0;

elseif rem(n,2) == 0

parita’ = 2;

else

parita’ = 1;

end

6.3.3 Istruzione while

Esegue dei comandi Ejecuta fintanto che la relazione e vera.

while relazone

comandi

end

Page 33: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

6 PROGRAMMAZIONE 31

6.4 Operatori logici e operatori relazionali

• Operatori relazionali

< minore di > maggiore di

<= minore uguale di >= maggiore uguale di

== uguale ~= diverso.

• Operatori Logici

& e | o ~ non

• Si usano con for, if e while.

• Si possono usare con scalari o matrici.

Quando se usano matrici, l’ operatore attua componente a

componente.

'

&

$

%

>> A =rand10(3,5)

A =

1 6 7 2 0

8 8 9 4 4

5 3 1 6 1

>> B= A < 5*ones(3,5)

B =

1 0 0 1 1

0 0 0 1 1

0 1 1 0 1

>> p= sum(B(:))/length(A(:))

p =

0.5333

Page 34: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

6 PROGRAMMAZIONE 32

Programma Esempio

'

&

$

%

function P = mult(A,B)

% P = mult(A,B) calcola il prodotto di

% matrici P = A*B, con A e B di dimensioni

% adeguate (se no, si ottiene un messaggio di

% errore)

[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

Page 35: Introduzione a MATLAB1 INTRODUZIONE 2 1.2 Accesso a MATLAB da windows 1. Cliccare due volte con il bottone sinistro del mouse sull’icona di Matlab nel Desktop. 2. Apparir`a una finestra

7 BIBLIOGRAFIA 33

7 Bibliografia

• D. Hanselman and B. Littefield, The Student edition of MATLAB:

version 4, Prentice-Hall, 1995.

• A. Biran and M. Breiner, Matlab for Engineers, Addison-Wesley,

1995.

• Eva Part-Enander, Anders Sjoberg, Bo Melin and Pernilla Isaksson,

The Matlab Handbook, Addison-Wesley, 1996.