Dispensa MatLab 1

Post on 23-Dec-2015

55 views 1 download

description

Dispense di Matlab (1a parte).

Transcript of Dispensa MatLab 1

APPUNTI DI MATLAB

Area di Geodesia e Geomatica

Sapienza Università di Roma

ING. MARCO CORSETTI

Area di Geodesia e Geomatica

Sapienza Università di Roma

CONTENUTI

Cos’è MATLAB?

MATLAB (Matrix Laboratory) è un ambiente di calcolo sviluppato alla fine

degli anni '70.

E’ utilizzabile per le seguenti applicazioni:

• matematica e calcolo numerico

• analisi dati e visualizzazione

• programmazione di alto livello

• modellistica e simulazione

Area di Geodesia e Geomatica

Sapienza Università di Roma

INTRODUZIONE

Interfaccia

Dopo aver lanciato MATLAB…

Command Window: è la finestra nella quale digitare i comandi e

visualizzare a video in tempo reale i risultati

Workspace: è lo spazio di lavoro contenente le variabili dichiarate

Current Directory: elenca i file contenuti nella directory corrente

Command Hystory: elenca tutti i comandi digitati di recente

Area di Geodesia e Geomatica

Sapienza Università di Roma

INTRODUZIONE

Area di Geodesia e Geomatica

Sapienza Università di Roma

Area di Geodesia e Geomatica

Sapienza Università di Roma

INTRODUZIONE

Configurare la path

Molto importante!

Creare una directory dove salvare i propri file

Impostare la path uguale alla directory creata

MATLAB come calcolatrice

• Operatori aritmetici +, -, *, /, ^,

• Caratteri speciali ;, %, :

• Variabili predefinite i, pi, NaN, Inf

– 2/0 -> Inf

– 0/0 -> NaN (Not-a-Number)

• Funzioni elementari sin, cos, log, exp

• Comandi speciali help, clear

help sqrt

Area di Geodesia e Geomatica

Sapienza Università di Roma

E possibile modificare il numero di cifre decimali ed il formato con cui vengono

visualizzati i risultati attraverso il comando format. Alcune delle opzioni possibili sono:

MATLAB come calcolatrice

Format

Sintassi Rappresentazione

format Default; virgola fissa scalata con 5 cifre

format short Virgola fissa scalata con 5 cifre

format long Virgola fissa scalata con 15 cifre

format short e Forma esponenziale con cinque cifre di mantissa

format long e Forma esponenziale con 15 cifre di mantissa

format short g Rappresentazione migliore con 5 cifre

format long g Rappresentazione migliore con 15 cifre

Area di Geodesia e Geomatica

Sapienza Università di Roma

ASSEGNAZIONE DI UNO SCALARE

OPERAZIONI SU SCALARI

Area di Geodesia e Geomatica

Sapienza Università di Roma

FUNZIONI MATEMATICHE PREDEFINITE IN MATLAB

Area di Geodesia e Geomatica

Sapienza Università di Roma

Premesso che MATLAB considera gli scalari come matrici 1x1, le matrici si

assegnano nel seguente modo:

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

2 righe 4 colonne

“ ; ” per cambiare riga, “ , ” per cambiare colonna

MATRICI

Assegnazione di un vettore riga:

>> vr = [1 2 3 4]

vr =

1 2 3 4

Assegnazione di un vettore colonna:

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

vc =

1

2

3

4

Area di Geodesia e Geomatica

Sapienza Università di Roma

Dimensione matrici:

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

>> size(A)

ans =

2 4

>> v = [1 2 3];

>>length (v)

ans =

3

MATRICI

Operazioni su matrici:

>> det(A) determinante

>> A’ trasposta

>>inv(A) inversa

Area di Geodesia e Geomatica

Sapienza Università di Roma

Definite due matrici A e B

>> A = [1 3 5; 10 0 1];

>> B = [3 2 2; 1 22 5];

Area di Geodesia e Geomatica

Sapienza Università di Roma

>> A+B

ans =

4 5 7

11 22 6

SOMMA

>> A-B

ans =

-2 1 3

9 -22 -4

DIFFERENZA

MATRICI: SOMMA E SOTTRAZIONE

Moltiplicazione di uno scalare per

una matrice

>> a=2;

>> A*2

ans =

2 6 10

20 0 2

Prodotto scalare tra due matrici

>> A.*B

ans =

3 6 10

10 0 5

Prodotto matriciale

>> A*B’

ans =

19 9 2

32 1 5

MATRICI: MOLTIPLICAZIONE

Area di Geodesia e Geomatica

Sapienza Università di Roma

Definire la matrice dei coefficienti ed il vettore dei termini noti per il seguente

sistema di equazioni e trovarne la soluzione:

MATRICI: ESERCIZIO 1

Area di Geodesia e Geomatica

Sapienza Università di Roma

Il comando :

• Importante per la manipolazione delle matrici

• Esempi

– generazione di vettori che siano delle progressione

aritmetiche di passo costante

• a = [1:10] o a = 1:10

• b = 1: .2 : 4

• c = 3:0 -> non produce niente!!!!

• c = 3: -1: 1

– mediante : si possono estrarre righe e colonne

Area di Geodesia e

Geomatica Sapienza

Università di Roma

• Costruire il vettore

– v = [1,2,…,19,20,20,19,…,2,1]

• Costruire la matrice A avente come colonne i 3 vettori

– v1 = [1,2,…,9]

– v2 = [2,4,…,18]

– v3 = [9,8,…,1]

MATRICI: ESERCIZIO 2

Area di Geodesia e Geomatica

Sapienza Università di Roma

Individuare\modificare elementi

32

021

303

RB

B(2,3)

B(2,3) = 1;

B

per selezionare un elemento

per modificare l’elemento

per visualizzare B

Area di Geodesia e

Geomatica Sapienza

Università di Roma

Estrarre sottomatrici

estrarre la riga R2

32

021

303

RB

B(2,:)

B(:,2:3)

estrarre la colonna C2

B(:,2)

sottomatrice 2 x 2

B(:,[1 3])

Area di Geodesia e Geomatica

Sapienza Università di Roma

Identità-zero-uno

identità di ordine n -> eye(n)

eye(3)

100

010

001

I

matrice nulla m x n ->

000

000Z

zeros(m,n)

zeros(2,3)

matrice m x n di 1 ->

111

111Z

ones(m,n)

ones(2,3)

Area di Geodesia e Geomatica

Sapienza Università di Roma

• Costruire le matrici A e B

• Estrarre da A 2 sottomatrici:

– una costituita dalle ultime 3 colonne

– una costituita dalla I e III riga e dalle colonne II e IV

111111

300

000

000

100

010

001

80138

901183

401212

101241

2

BA

MATRICI: ESERCIZIO 3

Area di Geodesia e Geomatica

Sapienza Università di Roma

Selezione: istruzione “if”

Controlla l'esecuzione di un determinato blocco di codice a seconda del valore (vero o falso)

assunto da una certa espressione logica.

if (condizione1)

istruzione1

elseif (condizione2)

istruzione2

elseif (condizione3)

istruzione3

else

istruzione4

end

>>a = 5;

>>b = 7;

>>if (a - b) > 0

disp('La differenza è ...

maggiore di 0')

else

disp('La differenza è ...

minore di 0')

end

Strutture di controllo

Area di Geodesia e Geomatica

Sapienza Università di Roma

Salvare in un M-file di nome radice.m la procedura per il calcolo delle radici

di un’equazione di secondo grado del tipo ax2 + bx + c = 0 considerando il

caso della radice negativa quindi usando il comando if (sqrt è la funzione

radice quadrata) (testarla con i valori a = 2, b = 1, c = 2).

ISTRUZIONE if: ESERCIZIO 4

Area di Geodesia e Geomatica

Sapienza Università di Roma

Iterazione: istruzione “for” e istruzione “while”

Consente di eseguire un insieme di istruzioni fino a quando non si verifica una data

condizione.

for contatore=inizio:passo:fine

Istruzione1

Istruzione 2

end

while condizione

Istruzione 1

Istruzione 2

end

>> for i=1:10:100

a = i;

end

>>a=0;

>>i=1;

>> while i<10

a =a+ i;

i=i+1;

end

Strutture di controllo

Area di Geodesia e Geomatica

Sapienza Università di Roma

Un array x contiene i valori di una serie di misurazioni. I valori compresi nell’intervallo

-0.1 < x < 0.1 devono essere considerati errati. Sviluppare un programma che elimina tutti

questi elementi e li sostituisca con tanti zeri alla fine dell’array.

misurazioni

x (1) 1.92

x (2) 0.05

x (3) -2.43

x (4) -0.02

x (5) 0.09

x (6) 0.85

x (7) -0.06

CICLO for: ESERCIZIO 5

Area di Geodesia e Geomatica

Sapienza Università di Roma

Scrivere uno script per rappresentare in un diagramma la seguente funzione per:

-5 x 30

CICLO for: ESERCIZIO 6

Y=

Area di Geodesia e Geomatica

Sapienza Università di Roma

Matlab ha molteplici funzioni per le rappresentazioni grafiche!

Oggi ne vediamo alcune.

Per ulteriori informazioni:

help graph2d

help graph3d

Grafici in Matlab

Area di Geodesia e Geomatica

Sapienza Università di Roma

Come creare un grafico in Matlab?

1. generare i dati

2. scegliere la finestra

3. tracciare il grafico

4. fissare gli assi, la griglia, ecc.

5. inserire le etichette degli assi, il titolo, la legenda

La Grafica in Matlab

Area di Geodesia e Geomatica

Sapienza Università di Roma

I grafici vengono visualizzati in figure

Il comando di base per la grafica è plot(y) –

visualizza gli elementi del vettore y rispetto agli indici del vettore stesso plot(x,y) – visualizza

il vettore y vs. il vettore x

E’ possibile modificare in modo interattivo l’aspetto dei grafici mediante il:

Plot Editing Mode

mediante riga di comando

La Grafica in Matlab

Area di Geodesia e Geomatica

Sapienza Università di Roma

Per visualizzare una qualsiasi funzione y=f(x) in Matlab, è SEMPRE necessario

creare i vettori x e y nel dominio di interesse:

(N.b. Matlab è un programma per l’analisi numerica, non simbolica!)

% un oscillatore armonico

t=[0:pi/100:2*pi];

x=cos(t);

y=sin(t);

1. Generare i dati

Area di Geodesia e Geomatica

Sapienza Università di Roma

figure(n) specifica su quale figura lavorare

figure(1)

plot(t,x)

% per disegnare entrambe le funzioni

plot(t,x,t,y)

subplot permette di suddividere la finestra in più grafici, per visualizzare

contemporaneamente diversi segnali

figure(1)

subplot(211),…

subplot(212),…

2. Scegliere la finestra

E’ possibile spezzare la finestra grafica corrente in una matrice [mxn] di sottofinestre grafiche. Il

comando subplot(m,n,k) divide la finestra corrente (ne crea una se non esistono finestre

grafiche) in una matrice [mxn] e fa diventare la k-esima, contata seguendo le righe, la finestra

corrente.

x=0:.1:2*pi;

subplot(2,2,1)

plot(x,sin(x))

subplot(2,2,2)

plot(x,cos(x))

subplot(2,2,3)

plot(x,sin(2*x))

subplot(2,2,4)

plot(x,cos(2*x))

Area di Geodesia e Geomatica

Sapienza Università di Roma

L'istruzione subplot permette di plottare più grafici contemporaneamente nella stessa figure.

• subplot(m,n,k)

m=righe, n=colonne

k=posizione corrente (per righe)

Esempio: subplot(2,3,1) invia le seguenti istruzioni grafiche (plot etc) nel riquadro in giallo.

subplot

Area di Geodesia e Geomatica

Sapienza Università di Roma

X=0:0.5:50;

Y1=5*X.^2;Y2=X.^3; Y3=exp(X);Y4=sin(X);

subplot(2,2,1), plot(X,Y1), title('5*X.^2'), ...

ylabel('y'), grid

subplot(2,2,2), plot(X,Y2), title('x^3'), ...

ylabel('y'), grid

subplot(2,2,3), plot(X,Y3), title('exp(x)'), ...

ylabel('y'), grid

subplot(2,2,4), plot(X,Y4), title('sin(x)'), ...

ylabel('y'), grid

0 20 40 600

5000

10000

15000

5*X.2

y

0 20 40 600

5

10

15x 10

4 x3

y

0 20 40 600

2

4

6x 10

21 exp(x)

y

0 20 40 60-1

-0.5

0

0.5

1

sin(x)

y

subplot

Area di Geodesia e Geomatica

Sapienza Università di Roma

Esistono diversi comandi per rappresentare i dati:

plot grafico 2D con scala lineare lungo entrambi gli assi

loglog grafico con scale logaritmiche per entrambi gli assi

semilogx grafico con scala logaritmica per l’asse x e lineare per l’asse y

semilogy grafico con scala logaritmica per l’asse y e lineare per l’asse x

La struttura dei comandi è plot(x1,y1,x2,y2,…)

E’ possibile specificare il colore e il tipo di linea dei grafici (vedi help plot)

3. Tracciare il grafico

Area di Geodesia e Geomatica

Sapienza Università di Roma

axis ( [XMIN XMAX YMIN YMAX] )

imposta la scala degli assi

grid on / grid off

abilita e disabilita la griglia

title

inserisce il titolo

xlabel, ylabel

inserisce le etichette negli assi, p.e. per specificare le unità di misura

legend

inserisce la legenda

4. Fissare gli assi e la griglia

5. Inserire le etichette, il titolo, la legenda

Area di Geodesia e Geomatica

Sapienza Università di Roma

La sintassi di plot nel caso in cui si vogliano utilizzare simboli, colori o tipi diversi di

linee è la seguente:

plot (x,y, ‘stile’)

Linee Simboli Colori

Linea continua - Punto . Rosso r

Linea tratteggiata -- Più + Verde g

Linea punteggiata : Cerchio o stella * Blu b

Linea tratto punto -. Croce x Bianco w

Quadrato s Magenta m

Plot(x,y,’-r’,’LineWidth’,5)

Proprietà e valori

Area di Geodesia e Geomatica

Sapienza Università di Roma

• Disegnare e trovare il max della funzione

nell’intervallo [-2,2]

)cos()(2

xexf x

PLOT: ESERCIZIO 7

Area di Geodesia e Geomatica

Sapienza Università di Roma

Si supponga di voler tracciare il grafico della funzione z = f(x, y). Si consideri la funzione:

z = e−(x+y)/2 · sin(3x) · sin(3y)

nell’intervallo: x = [0, 5], y = [0, 5]

Si può procedere nel seguente modo:

GRAFICI TRIDIMENSIONALI 1/4

Primo passo

Si determinano i vettori di punti degli assi x e y

x = linspace(0,5,50);

y = linspace(0,5,50);

Area di Geodesia e Geomatica

Sapienza Università di Roma

GRAFICI TRIDIMENSIONALI 2/4

Terzo passo

Si può ora definire la funzione:

Z = exp(-(X+Y)/2).*sin(3*X).*sin(3*Y);

Secondo passo

A partire dai vettori x e y, si determinano, col comando meshgrid, due matrici X ed Y.

X ha tante righe quanti sono gli elementi di y ed ogni riga è uguale al vettore x.

Y ha tante righe quanti sono gli elementi di x ed ogni riga è uguale al vettore y.

[X,Y]= meshgrid(x,y);

Area di Geodesia e Geomatica

Sapienza Università di Roma

GRAFICI TRIDIMENSIONALI 3/4

Area di Geodesia e Geomatica

Sapienza Università di Roma

Quarto passo

A questo punto è possibile tracciare il grafico della funzione utilizzando diverse

metodologie:

Tracciare delle curve di livello con il comando:

contour ( X , Y , Z );

disegnare la curva con linee:

mesh ( X , Y , Z );

disegnare la figura con facce :

surf ( X , Y , Z );

figure(1)

x = linspace(0, 5, 50);

y = linspace(0, 5, 50);

[X,Y] = meshgrid(x, y);

Z = exp(−(X + Y)/2). ∗ sin(3 ∗ X). ∗ sin(3 ∗ Y);

surf(X,Y, Z);

GRAFICI TRIDIMENSIONALI 4/4

Area di Geodesia e Geomatica

Sapienza Università di Roma