You are on page 1of 45

Politecnico di Torino

MATLAB
PER LA
GEOMATICA
Prof. Ambrogio M. Manzino
(ambrogio.manzino@polito.it)

A cura di:
Ing. Mattia De Agostino
(mattia.deagostino@polito.it)

Indice della presentazione
 Il programma MATLAB
 L‟ambiente di lavoro
 File e Operatori
 Matrici
 Istruzioni IF, FOR, WHILE, SWITCH
 Definizione di nuove funzioni
 MATLAB e TOPOGRAFIA
 Gli angoli
 Grandezze angolari
 Grafici

Il programma MATLAB

L‟AMBIENTE DI LAVORO (I)

MATLAB è l‟acronimo di MATrix LABoratory.
È nato principalmente come programma destinato alla
gestione di matrici. Le versioni successive sono state
completate con serie di funzioni che permettono le più
complesse analisi numeriche.
Allo stato attuale, il programma consente di effettuare conti
con un numero infinito di dati (al contrario di Microsoft Excel,
il cui foglio di lavoro è limitato a 65536 righe) e per problemi
di tipo:
 Algebrico (monomi, polinomi, funzioni definite dall’utente)
 Statistico (regressioni, minimi quadrati)
 Numerico (derivazione, integrazione, calcolo differenziale)
 Matriciale (prodotti tra vettori)

Il programma MATLAB

L‟AMBIENTE DI LAVORO (II)

La linea di comando di MATLAB è indicata da un simbolo di
attesa (prompt), come in DOS:
>>

Accetta dichiarazioni di variabili, espressioni e chiamate a
tutte le funzioni disponibili nel programma.
Tutte le funzioni di MATLAB non sono altro che files di testo,
simili a quelli che l‟utente può generare con un text editor, e
vengono eseguite semplicemente digitandone il nome sulla
linea di comando.
MATLAB permette inoltre di richiamare le ultime righe di
comandi inseriti usando le frecce in alto e in basso.

Il programma MATLAB L‟AMBIENTE DI LAVORO (III) MATLAB presenta un help in linea con informazioni sulla sintassi di tutte le funzioni disponibili. ad esempio per sapere quali sono le funzioni specifiche per l‟analisi matriciale. Per accedere a queste informazioni. basta digitare: >> help nome_funzione È anche possibile avere un help di tutte le funzioni di una certa categoria. basta digitare: >> help >> helpwin (modalità HTML) . basta digitare: >> help elmat Per sapere quali sono le varie categorie di funzioni disponibili (i cosiddetti toolbox).

altrimenti viene visualizzato il risultato dell‟istruzione. Le istruzioni (siano esse contenute in un file *. var1 = 2+3 . oppure digitate direttamente dalla linea di comando) vanno sempre terminate con un punto e virgola (.m.Il programma MATLAB FILES E PUNTEGGIATURA (I) I file interpretati dal programma sono file di testo (ASCII) con estensione . Es. var1 = 2+3.). Al loro interno.m e sono eseguibili nell‟ambiente MATLAB semplicemente digitandone il nome (senza estensione!) sulla linea di comando. è possibile inserire commenti precedendoli dal simbolo percento (%).

Il risultato dell‟ultima operazione è memorizzato nella variabile ans (abbreviazione di ANSwer). Per visualizzare il contenuto di una variabile è sufficiente digitarne il nome senza punto e virgola sulla linea di comando. . con il primo obbligatoriamente alfabetico. distingue MAIUSCOLE da minuscole). e accetta nomi di variabili lunghi fino ad un massimo di 19 caratteri alfanumerici.Il programma MATLAB FILES E PUNTEGGIATURA (II) MATLAB è case-sensitive (ovvero.

ma si possono visualizzare in un formato diverso usando i comandi: format format format format format format short long short e long e short g long g       Virgola fissa con 4 decimali Virgola fissa con 15 decimali Notazione scientifica 4 decimali Notazione scientifica 15 decimali Notazione intera 4 decimali Notazione intera 15 decimali Es. Provare a visualizzare il numero  (= 3.Il programma MATLAB FILES E PUNTEGGIATURA (III) Tutti i calcoli effettuati in MATLAB sono eseguiti in doppia precisione.1415926) nei vari formati .

mat) . in vari formati load: richiama in memoria le variabili salvate sul file specificato what: elenco di tutte le funzioni MATLAB nell‟area di lavoro (estensione .m) e dei file di dati che sono stati salvati (estensione .Il programma MATLAB COMANDI DI USO GENERALE (I) who: elenco delle variabili definite in memoria whos: informazioni su tutte le variabili in memoria clear: cancella tutte le variabili in memoria o una in particolare se specificata save: salva tutte le variabili in memoria sul file specificato.

Es. .: error('A deve essere simmetrica').Il programma MATLAB COMANDI DI USO GENERALE (II) Il testo in MATLAB viene inserito sempre tra apici: Es.: string='Ciao' Per visualizzare stringhe o messaggi si adopera il comando disp. Es.: num=input('Inserire un numero: '). La funzione input mostra un messaggio e permette l'inserimento di dati.m Es.: disp('Premere un tasto') disp(string) La funzione error mostra un messaggio di errore ed interrompe l'esecuzione di un file *.

Il programma MATLAB OPERATORI (I) Gli operatori di maggior utilizzo sono: Scalari: + - * Trigonometrici: sin cos tan asin acos atan atan2 Logaritmici: exp Booleani: && (AND) || (OR) Logici: == >= Varie: abs sqrt log / ^ log10 <=  (NOT) = sign .

es. quindi è preferibile NON usare i o j come variabili. abs(z) angle : fase.Il programma MATLAB OPERATORI (II) L‟unità complessa è predefinita tramite i o j. angle(z) real : parte reale. es. real(z) imag : parte immaginaria. es. o come indici nei cicli! Un numero complesso si scrive nella forma a+j*b Es: z=2+j*3 Operatori applicabili a numeri complessi: abs : modulo. imag(z) . es.

. 4 5 6. separando:  gli elementi delle righe con spazi o virgole  le diverse righe con punti e virgola (oppure andando a capo) Es. 3 6 9 ]. vettore riga: x = [1. 3]. 2. di vettore colonna: y = [1. 7]. Es. 4. 7 8 9]. di matrice: oppure: A = [1 A = [1 4 7 2 2 5 8 3. Es.Il programma MATLAB MATRICI (I) L'inserimento di un vettore o di una matrice in generale viene effettuato tra parentesi quadre.

A(1:2.:) dà [4 5 6]  la colonna n-esima è indirizzata come A(:. 6. A(:. 3. A(2. è indirizzata come A(m1:m2. con m1mm2 e n1nn2.n) Es.3) dà 6  la riga m-esima è indirizzata come A(m. 9]  la sottomatrice avente elementi amn. 6] .2:3) dà [2. A(2.:) Es.Il programma MATLAB MATRICI (II) Per far riferimento agli elementi di una matrice A:  l‟elemento amn è indirizzato come A(m.n) Es. 5.n1:n2) Es.3) dà [3.

senza ricorrere a cicli.^) che permettono di effettuare operazioni su vettori elemento per elemento. se x è un vettore.* . Ad esempio.Il programma MATLAB MATRICI (III) Gli operatori applicabili alle matrici sono: + . per moltiplicare elemento per elemento i due vettori sin(x) e cos(x) basta fare: y = sin(x) .* cos(x) ./ .* ^ / \ ‘ Significato analogo agli operatori tradizionali Divisione a destra: B/A=B*inv(A) Divisione a sinistra: A\B=inv(A)*B Trasposta: B=A’ Esistono poi particolari operatori (.

sqm(b) Massimo e minimo di un vettore Ordina il vettore in senso crescente Media e Scarto Quadratico Medio degli elementi inclusi in un vettore Altre funzioni operano invece essenzialmente su matrici: inv(A) det(A) size(A) rank(A) Inversa della matrice Determinante della matrice Dimensioni della matrice Rango della matrice . min(b) sort(b) mean(b). e sono: max(b).Il programma MATLAB MATRICI (IV) Alcune funzioni operano essenzialmente su vettori (riga o colonna).

n) rand(m. produce un vettore di n elementi pari a quelli sulla diagonale di X. Se invece X è una matrice quadrata di dimensione n per n. .Il programma MATLAB MATRICI (V) Esistono poi varie funzioni predefinite per la creazione di matrici: eye(n) zeros(m.n) ones(m.n) diag(X) Matrice identità n righe n colonne Matrice di 0 con m righe e n colonne Matrice di 1 con m righe e n colonne Matrice casuale di valori tra 0 e 1 Se X è un vettore con n elementi. produce una matrice quadrata diagonale di dimensione n per n con gli elementi di X sulla diagonale.

Attenzione: nelle operazioni tra matrici non sempre vale la proprietà commutativa: A + B A * B =  B + A B * A . Ad esempio non si può invertire una matrice non quadrata.Il programma MATLAB MATRICI (VI) Attenzione: tutte le funzioni che operano su matrici hanno dei vincoli sugli operandi introdotti. Per ulteriori spiegazioni sulla sintassi della funzione utilizzare il comando help.

IF (I) La forma generale del costrutto IF è la stessa di un qualsiasi linguaggio di programmazione: condizione1 if condizione1 operazioni1.Il programma MATLAB COSTRUTTI LOGICI . end sì operazioni1 no condizione2 no operazioni3 sì operazioni2 . elseif condizione2 operazioni2. else operazioni3.

Gli operatori disponibili per tali confronti sono: < . operazioni2.Il programma MATLAB COSTRUTTI LOGICI . condizione2 devono essere tali da restituire come risultato VERO o FALSO. operazioni1. maggiore di <= . operazioni3 sono le operazioni da compiere se la condizione corrispondente risulta vera. >= minore o uguale a. maggiore o uguale a == uguale a ~= diverso da & AND logico | OR logico ~ NOT logico .IF (II) condizione1. > minore di.

end k <= n? k = k + step sì operazioni no END .Il programma MATLAB CICLI DI CONTROLLO . La principale struttura di controllo è la struttura FOR: k=1 for k = 1:step:n operazioni.FOR Uno dei principali vantaggi nell‟impiego del calcolatore è la capacità di ripetere operazioni semplici un gran numero di volte. per mezzo di strutture (o cicli) di controllo.

ed inoltre inserire nelle operazioni qualcosa che possa modificare la condizione. end Attenzione: occorre prevedere una inizializzazione prima del ciclo che verifichi la condizione per far sì che il programma entri nel ciclo. . allora è preferibile ricorrere alla struttura WHILE: while condizione operazioni. altrimenti il ciclo sarà ripetuto all'infinito.Il programma MATLAB CICLI DI CONTROLLO .WHILE Nel caso in cui un‟operazione debba essere compiuta fino a che una certa condizione è verificata.

. separati in intervalli da 10°. da 0° a 90°.Il programma MATLAB CICLI DI CONTROLLO Esercizio: creare uno script MATLAB in grado di creare una tabella (= matrice) che contenga nella prima colonna gli angoli in sessadecimali (GRA). tenendo conto della proporzione: GRA : GRA = 360° : 2 Utilizzare prima un ciclo FOR e poi ripetere l‟operazione con un ciclo WHILE (ricordandosi di incrementare l‟angolo!). e nella seconda colonna gli stessi angoli espressi in radianti (RAD).

Il programma MATLAB DEFINIZIONE DI NUOVE FUNZIONI (I) In MATLAB è possibile creare nuove funzioni. a e b sono argomenti d‟ingresso.m e nome del file uguale a quella della funzione desiderata.b) risulta che fun1 e fun2 sono nomi di funzioni. Ad esempio. in: function z = fun1(a. La prima riga del file deve contenere il nome della funzione e gli argomenti di ingresso e di uscita.b) oppure in: function [x. x.y] = fun2(a. Basta creare un file con estensione . y e z sono argomenti d‟uscita. .

le variabili utilizzate all‟interno di una funzione e che non vengono date in output non sono richiamabili fuori dalla funzione stessa! . Quindi.Il programma MATLAB DEFINIZIONE DI NUOVE FUNZIONI (II) Il blocco di linee di commento consecutive che eventualmente segue la prima linea del file viene visualizzato digitando il comando: >> help nome_funzione Attenzione: Le variabili utilizzate in una funzione sono variabili locali e quindi indipendenti da quelle dell‟ambiente chiamante.

ovvero la costituzione di un elaborato cartografico che rappresenti tridimensionalmente l‟oggetto da esaminare. .MATLAB e Geomatica INTRODUZIONE Uno degli scopi della Topografia è la rappresentazione.

bologna.MATLAB e Geomatica INTRODUZIONE I punti significativi per tale rappresentazione vanno rilevati mediante misure di: • angoli • distanze • dislivelli Rilievo di inquadramento della città di Bologna http://sit.comune.it .

.

. quelli più utilizzati in Topografia sono: Sistema matematico: l‟unità di misura è il radiante (rad) definito come l’ampiezza dell’angolo al centro che sottende un arco di lunghezza pari al raggio della circonferenza stessa. Sistema centesimale: l‟unità di misura è il grado centesimale (gon) definito come 1/400 dell’angolo giro.GLI ANGOLI (I) L‟ampiezza di un angolo può essere espressa in diversi sistemi di misura.

.GLI ANGOLI (II) Sistema sessagesimale: l‟unità di misura è il grado sessagesimale (°) definito come 1/360 dell’angolo giro. I sottomultipli del grado sessagesimale sono il primo sessagesimale („). e il secondo sessagesimale (“) pari a 1/60 di primo sessagesimale. definito come la centesima parte del primo sessadecimale. Le frazioni di secondi sono espresse nel sistema decimale. I sottomultipli sono il primo sessadecimale („). Sistema sessadecimale: l‟unità di misura è il grado sessagesimale (°). definito come la centesima parte del grado sessagesimale e il secondo sessadecimale (“). pari a 1/60 di grado sessagesimale.

0000 2 rad 400 gon 360° 00‟ 00” 360°.0000 .0000 3/2  rad 300 gon 270° 00‟ 00” 270°.0000  rad 200 gon 180° 00‟ 00” 180°.MATLAB e Geomatica GLI ANGOLI (III) Valori notevoli: Matematico Centesimale Sessagesimale Sessadecimale  / 2 rad 100 gon 90° 00‟ 00” 90°.

MATLAB e Geomatica GLI ANGOLI (IV) Conversioni Sessagesimale  Sessadecimale Si utilizza l‟algoritmo per il cambio di base (da base 60 a base 10) di un numero.4200 Sessadecimale  Centesimale  Matematico Questi tre sistemi sono tutti a base decimale.  = 47° 25‟ 12”   = 47 + 25/60 + 12/3600 = 47°. Es. deg gon rad = = 180 200  . In questo caso la conversione da un sistema di misura ad un altro si basa su una semplice relazione di proporzionalità.

In particolare: Matematico Sessadecimale Sessagesimale    Sessadecimale Sessagesimale Centesimale rad2deg deg2gps gps2gon    Sessagesimale Sessadecimale Matematico gon2gps gps2deg deg2rad … e viceversa! Centesimale Sessagesimale Sessadecimale .MATLAB e Geomatica GLI ANGOLI (V) Esercizio: Creare una serie di funzioni (mediante il comando function) per la conversione tra i vari sistemi di angoli.

MATLAB e Geomatica GRANDEZZE ANGOLARI (I) In Topografia vengono utilizzate convenzioni angolari che si differenziano da quelle adottate in matematica. ecc. 2) il verso positivo è orario e quindi il I quadrante sarà compreso tra 0° e /2. il II quadrante sarà compreso tra /2 e . Y IV I + III II . infatti: 1) lo zero si trova sull‟asse Y delle ordinate.

MATLAB e Geomatica GRANDEZZE ANGOLARI (II) Si consideri un punto di origine (V) e due semirette uscenti da questo passanti per i punti A e B. Si stabilisca convenzionalmente quali dei due punti rappresenti il "Punto avanti (PA)" e quale il "Punto indietro (PI)".  = PA  PI Se: (PA)= B e (PI) = A ⇒  = AVB viceversa se (PA) = A e (PI) = B ⇒  = BVA . Definiamo angolo “la rotazione oraria che deve compiere la direzione corrispondente al punto indietro per sovrapporsi a quella del punto avanti”.

l'angolo di cui la parallela all'asse Y del riferimento passante per P.MATLAB e Geomatica GRANDEZZE ANGOLARI (III) Si consideri un riferimento ortonormale R(O. Y) .Y) nel quale siano noti i punti P e Q tramite le loro coordinate. deve ruotare in senso orario per sovrapporsi alla direzione PQ.X. Definiamo "Angolo di direzione di Q rispetto a P (PQ o (PQ))“. PQ XQ  XP = arctan YQ  YP Nell‟ambiente MATLAB tale angolo si può calcolare mediante la funzione: atan2(X.

35 m considerando i seguenti punti di coordinate: X = 103.42 m Y = 37.MATLAB e Geomatica GRANDEZZE ANGOLARI (IV) Esercizio: Verificare in MATLAB i seguenti angoli di direzione calcolati rispetto al punto P di coordinate: XP = 123.62 m X = 183.24 m Y = 42.49 m YP = 144.92 m Y = 182.32 m (4° quadrante) (1° quadrante) (3° quadrante) (2° quadrante) .35 m X = 62.41 m X = 224.52 m Y = 327.

y). Ad esempio se si hanno due vettori x e y. è perciò opportuno vettore da usare come funzione per ricavare un vettore ed usare la funzione plot sui due . vettori così ottenuti. passarlo alla contenente le ordinate. il grafico corrispondente si ottiene come: >> plot(x.MATLAB e Geomatica GRAFICI (I) La funzione plot crea grafici bidimensionali: riceve in ingresso due vettori della stessa lunghezza e stampa i punti corrispondenti alle coordinate fornite dai due vettori. di una qualsiasi funzione. Per tracciare il grafico necessario crearsi un ascisse.

y). . >> plot(x.MATLAB e Geomatica GRAFICI (II) Ad esempio per tracciare la funzione sin(x) in un intervallo compreso tra -4 e 4 si può usare la serie di comandi: >> x=-4:0.01:4. >> y=sin(x).

Le scelte possibili possono essere visualizzate con il comando: >> help plot .'g+'). Il primo è il colore del grafico.y. Ad esempio >> plot(x. il secondo il simbolo usato per contrassegnare i punti.MATLAB e Geomatica GRAFICI (III) Per creare grafici di colori diversi o usando caratteri diversi dal punto si può specificare dopo le coordinate una stringa di 2 elementi. crea un grafico in verde usando dei + al posto dei punti.

MATLAB e Geomatica GRAFICI (IV) Altri comandi sono: grid title xlabel ylabel axis legend : sovrappone al grafico un grigliato : aggiunge un titolo del disegno : aggiunge una legenda per l‟asse x : aggiunge una legenda per l‟asse y : riscala gli assi del grafico : crea una legenda del grafico Il comando figure crea una nuova finestra grafica in cui far comparire il disegno. per spostarsi sulla n-esima finestra grafica. basta digitare figure(n) .

. Inserire all‟interno del grafico un titolo. le etichette degli assi cartesiani e la griglia.MATLAB e Geomatica GRAFICI (V) Esercizio: disegnare la funzione di probabilità normalizzata fx =  x2  1 exp    2 2·   Nell‟intervallo compreso tra -4 e +4.

MATLAB e Geomatica GRAFICI (VI) Il comando hold on permette di sovrapporre due o più grafici. Ad esempio per avere sullo stesso grafico le curve di livello e i vettori gradiente come nella figura seguente: . Le impostazioni standard di MATLAB hanno il comando hold disattivato. mentre il comando hold off elimina tale possibilità di sovrapposizione di grafici.

1 .1:2.MATLAB e Geomatica I comandi necessari sono: xx = -2:0.1. [x.* exp(-x.2 -. quiver(px.y] = meshgrid(xx.^2 .py]=gradient(z.yy).h).1 0 . yy = xx. [px. hold on contour (z.^2).1).y. z = x . h=[-.py) hold off GRAFICI (VII) .5 1].

. 2005 (Biblioteca VC 512.Wesley. McGraw.9434 BIR/A) . Addison. “Laboratorio di calcolo con Matlab”...9434 PALMW) Biran A.MATLAB e Geomatica BIBLIOGRAFIA Gamba A.polito. Politeko. 1995 (Biblioteca VC 512. 2000 (disponibile in forma elettronica su http://ebook. “MATLAB for engineers”.it/) Palm W. “Matlab 7 per l'ingegneria e le scienze”.