Upload
samantharao
View
53
Download
1
Embed Size (px)
DESCRIPTION
Dispense di Matlab (1a parte).
Citation preview
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