You are on page 1of 42

APPUNTI DI MATLAB

ING. MARCO CORSETTI


Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

CONTENUTI

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

INTRODUZIONE

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

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

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
Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

INTRODUZIONE

Configurare la path
Molto importante!
Creare una directory dove salvare i propri file
Impostare la path uguale alla directory creata

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

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

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

MATLAB come calcolatrice


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:
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

ASSEGNAZIONE DI UNO SCALARE

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

OPERAZIONI SU SCALARI

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

FUNZIONI MATEMATICHE PREDEFINITE IN MATLAB

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

MATRICI

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

Assegnazione di un vettore riga:


>> vr = [1 2 3 4]
vr =
1234

Sapienza
Universit di Roma

Assegnazione di un vettore colonna:


>> vc = [1; 2; 3; 4]
vc =
1
2
3
4
Area di Geodesia e
Geomatica

MATRICI
Dimensione matrici:
>> A = [1 2 3 4; 5 6 7 8];
>> size(A)

Operazioni su matrici:

ans =

>> det(A) determinante

24

>> A trasposta

>> v = [1 2 3];

>>inv(A) inversa

>>length (v)
ans =
3
Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

MATRICI: SOMMA E SOTTRAZIONE

Definite due matrici A e B


>> A = [1 3 5; 10 0 1];
>> B = [3 2 2; 1 22 5];

Sapienza
Universit di Roma

SOMMA

DIFFERENZA

>> A+B

>> A-B

ans =

ans =

4 5 7

-2 1 3

11 22 6

9 -22 -4
Area di Geodesia e
Geomatica

MATRICI: MOLTIPLICAZIONE
Moltiplicazione di uno scalare per
una matrice

Prodotto scalare tra due matrici

>> a=2;

>> A.*B

>> A*2

ans =

ans =

2 6 10

10 0 5

6 10

20 0 2
Prodotto matriciale
>> A*B
ans =

19 9 2
32 1 5
Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

MATRICI: ESERCIZIO 1

Definire la matrice dei coefficienti ed il vettore dei termini noti per il seguente
sistema di equazioni e trovarne la soluzione:

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

Il comando :
Importante per la manipolazione delle matrici
Esempi
generazione di vettori che siano delle progressione
aritmetiche di passo costante

a = [1:10]
b = 1: .2 : 4
c = 3:0
->
c = 3: -1: 1

a = 1:10

non produce niente!!!!

mediante : si possono estrarre righe e colonne


Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

MATRICI: ESERCIZIO 2

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]

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

Individuare\modificare elementi
3 0 3
R 23
B
1 2 0

B(2,3)
B(2,3) = 1;

B
Sapienza
Universit di Roma

per selezionare un elemento


per modificare lelemento

per visualizzare B
Area di Geodesia e
Geomatica

Estrarre sottomatrici
3 0 3
R 23
B
1 2 0
B(2,:)
B(:,2)
B(:,2:3)

estrarre la riga R2
estrarre la colonna C2
sottomatrice 2 x 2

B(:,[1 3])
Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

Identit-zero-uno
identit di ordine n

->

eye(n)

eye(3)
matrice nulla m x n

->

zeros(m,n)
zeros(2,3)

matrice m x n di 1

->

ones(m,n)
ones(2,3)

Sapienza
Universit di Roma

1 0 0

I 0 1 0
0 0 1

0 0 0

Z
0 0 0

1 1 1

Z
1 1 1
Area di Geodesia e
Geomatica

MATRICI: ESERCIZIO 3

Costruire le matrici A e B
1 24 1

2 21 1
A 3 18 1

8 3 1

0 1

0 4
0 9

0 82

0
B
0

0 0
1 0
0 1
1 1

0 0 0

0 0 0
0 0 3

1 1 1

Estrarre da A 2 sottomatrici:
una costituita dalle ultime 3 colonne
una costituita dalla I e III riga e dalle colonne II e IV
Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

Strutture di controllo
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

Sapienza
Universit di Roma

>>a = 5;
>>b = 7;
>>if (a - b) > 0
disp('La differenza ...
maggiore di 0')
else
disp('La differenza ...
minore di 0')
end

Area di Geodesia e
Geomatica

ISTRUZIONE if: ESERCIZIO 4

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


di unequazione 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).

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

Strutture di controllo
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

Sapienza
Universit di Roma

>> for i=1:10:100


a = i;
end
>>a=0;
>>i=1;
>> while i<10
a =a+ i;
i=i+1;
end
Area di Geodesia e
Geomatica

CICLO for: ESERCIZIO 5

Un array x contiene i valori di una serie di misurazioni. I valori compresi nellintervallo


-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 dellarray.
misurazioni

Sapienza
Universit di Roma

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
Area di Geodesia e
Geomatica

CICLO for: ESERCIZIO 6

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


-5 x 30

Y=

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

Grafici in Matlab

Matlab ha molteplici funzioni per le rappresentazioni grafiche!

Oggi ne vediamo alcune.


Per ulteriori informazioni:
help graph2d
help graph3d

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

La Grafica in Matlab

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

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

La Grafica in Matlab
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 laspetto dei grafici mediante il:
Plot Editing Mode
mediante riga di comando

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

1. Generare i dati

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 lanalisi numerica, non simbolica!)

% un oscillatore armonico
t=[0:pi/100:2*pi];
x=cos(t);
y=sin(t);

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

2. Scegliere la finestra
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),
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))
Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

subplot
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.

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

subplot
5*X.

15

10000

10

5000

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


ylabel('y'), grid

0
0

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


ylabel('y'), grid

20
21

40

60

20

40

60

40

60

sin(x)

1
0.5

4
0

2
-0.5
0

-1
0

Sapienza
Universit di Roma

exp(x)

x 10

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

15000

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

x 10

20

40

60

20

Area di Geodesia e
Geomatica

3. Tracciare il grafico
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 lasse x e lineare per lasse y
semilogy grafico con scala logaritmica per lasse y e lineare per lasse 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)

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

4. Fissare gli assi e la griglia


5. Inserire le etichette, il titolo, la legenda
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
Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

Propriet e valori
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)

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

PLOT: ESERCIZIO 7

Disegnare e trovare il max della funzione

f ( x) e

x2

cos(x)

nellintervallo [-2,2]

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

GRAFICI TRIDIMENSIONALI 1/4


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

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


nellintervallo: x = [0, 5], y = [0, 5]
Si pu procedere nel seguente modo:

Primo passo
Si determinano i vettori di punti degli assi x e y
x = linspace(0,5,50);
y = linspace(0,5,50);

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

GRAFICI TRIDIMENSIONALI 2/4


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);

Terzo passo
Si pu ora denire la funzione:
Z = exp(-(X+Y)/2).*sin(3*X).*sin(3*Y);

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

GRAFICI TRIDIMENSIONALI 3/4

Quarto passo
A questo punto possibile tracciare il graco 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 gura con facce :
surf ( X , Y , Z );

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

GRAFICI TRIDIMENSIONALI 4/4


gure(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);

Sapienza
Universit di Roma

Area di Geodesia e
Geomatica

You might also like