Visualizzazione di dati

Documenti analoghi
Esercitazione 3. Heapsort

ADT Coda con priorità

ALGORITMI E STRUTTURE DATI

Algoritmi e Strutture Dati

UD6 - MATLAB. Gestione della grafica

Algoritmi e Strutture Dati. HeapSort

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

MATLAB - Programmazione - 2. Antonino Polimeno

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

MATLAB (3) - Grafica 2 e 3D

Heap e code di priorità

ESERCITAZIONE MATLAB

Introduzione al MATLAB c Parte 2 Funzioni

Introduzione a MATLAB. Fabio Rossi fabio.rossi@sssup.it

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 2 - Introduzione a MATLAB

Finestre grafiche. >> figure >> figure(n)

Laboratorio 2 Grafici di funzione in Scilab Metodo di Bisezione

Heap Ordinamento e code di priorità. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 9

MATLAB: Una veloce introduzione (Parte II)

FON DAMEN TI DI IN FORMATICA

MATLAB Elementi di grafica Costrutti di programmazione

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1

Ordinamenti per confronto: albero di decisione

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Introduzione a Matlab

Grafici. 1 Generazione di grafici a partire da un foglio elettronico

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Calcolo Numerico I - a.a Laboratorio 3 - Introduzione a MATLAB

CORSO DI LABORATORIO DI INFORMATICA

Introduzione al MATLAB c Parte 3 Script e function

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Algoritmi e Strutture Dati

Introduzione a MATLAB

INDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5.

Introduzione a Matlab

Prove d esame Esercizi con Matlab

Esercizi su alberi binari

Grafici. Un programma grafico inizia con un comando che chiude una eventuale finestra grafica precedente: close

Corso di Calcolo Numerico C.d.L in Ingegneria Aerospaziale e Meccanica a.a 2016/2017. Prof. Pasqua D Ambra. Appunti di Matlab : grafica

I N. 1) Grafici 2) Video 3) Esercizi O R A I X L E Z I O N E 5 O R Y.

Calcolo Numerico A.A Esercitazione n

Excel 2. Master Universitario di II livello in MANAGER NELLE AMMINISTRAZIONI PUBBLICHE A.A Prof.ssa Bice Cavallo

Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006

Introduzione alla programmazione

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

Esercitazione n 2. Costruzione di grafici

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

Lezioni su MATLAB. Ingegneria Civile/Meccanica

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

L INTERFACCIA GRAFICA DI EXCEL

Grafici in matlab. Un esempio di grafico: xv = 3:0.1:3; yv = xv.^3 5*xv.^2 + 4; plot(xv,yv) xlabel('value of x') ylabel('value of y')

Grafici e Pagina web

Fondamenti di Informatica

Manuale GWCAP MANUALE. Software per la realizzazione di capitolati d appalto per gli impianti elettrici

Programmazione Matlab

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

PROVETTE D ESAME. Algoritmi e Strutture Dati

Introduzione a Matlab. Renato Mainetti

LEZIONE DI MATLAB 2.0. Ing.Irene Tagliente

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Corso Matlab : Terza lezione (Esercitazione, 04/10/13) Samuela Persia, Ing. PhD.

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Introduzione a Matlab

Insert > Object > Chart

Alberi e alberi binari I Un albero è un caso particolare di grafo

Laboratorio di Matematica Computazionale A.A Lab. 4

Alberi ed Alberi Binari

Funzioni definite dall utente: sintassi

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Operazioni di Ordinamento

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

PRIMI PASSI CON UN DATABASE

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.

MATRICI (ARRAY) IN MATLAB/OCTAVE

Programmazione Greedy I codici di Huffman

Informatica Applicata al Suono Tutorial Matlab

Alberi binari e alberi binari di ricerca

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Corso di Matematica per la Chimica

EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0

Note per la Lezione 4 Ugo Vaccaro

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

23/10/2016. gli alberi. alcune definizioni. un esempio. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica.

INTRODUZIONE A MATLAB

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

Excel 2. Informatica per le applicazioni economiche A.A. 2011/2012. Prof.ssa Bice Cavallo

Confronto tra stringhe. (modulo) Calcolo della media e della varianza. Ecco un elenco di codici Matlab: - Calcolo valore assoluto (modulo)

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

Database Modulo 6 CREAZIONE DI MASCHERE

Grafici tridimensionali

Calcolo numerico e programmazione Introduzione a Scilab (3)

Verifica di resistenza al fuoco di un. edificio in cemento armato. Esempio guidato 9 Pag. 1

Gruppo di lavoro h Scuola secondaria di primo grado S.G. Bosco Fara Gera d Adda

Modificare il tipo di grafico Spostare, ridimensionare, cancellare un grafico

Trasformazione in immagini vettoriali

Transcript:

Visualizzazione di dati MATLAB fornisce un estesa serie di strumenti per la visualizzazione di dati in due e tre dimensioni. Questi strumenti consentono di: Creare grafici Editare i grafici ed esplorare il valore degli elementi rappresentati Annotare i grafici con testo o simboli Stampare i grafici Salvare i grafici in MATLAB (FIG-files) e/o esportarli in formati grafici standard

La funzione di base per creare grafici in MATLAB è plot. La funzione plot appare in diverse forme in base al numero ed al tipo degli argomenti in input. Ad esempio, se y è un vettore, plot(y) crea un grafico in cui i valori contenuti nel vettore y sono rappresentati come ordinate rispetto agli indici di y. In altre parole, il grafico riporterà in ascissa gli indici di y ed in ordinata il valore dei suoi elementi.

Se invece x e y sono due vettori, plot(x, y) crea un grafico in cui i valori contenuti nel vettore y sono rappresentati rispetto ai valori contenuti in x. In altre parole, il grafico rappresenterà le coppie (x i, y i ), con in ascissa i valori di x ed in ordinata quelli di y. La funzione plot in questa forma è spesso usata per disegnare il grafico di funzioni: si inseriscono in x i valori in corrispondenza dei quali la funzione deve essere calcolata ed in y i valori calcolati della funzione.

>> x = [0 : pi/100 : 2*pi]; >> y = sin(x); >> plot(y); >> x = [0 : pi/100 : 2*pi]; >> y = sin(x); >> plot(x,y);

Le funzioni xlabel e ylabel permettono di assegnare etichette agli assi delle ascisse e delle ordinate. NOTA: un grafico professionale dovrebbe sempre riportare le etichette degli assi (ovvero che cosa gli assi rappresentano), nonché le rispettive unità di misura. La funzione title permette di assegnare un titolo al grafico. xlabel, ylabel e title devono essere eseguiti dopo il comando plot

>> x = [0 : pi/100 : 2*pi]; >> y = sin(x); >> plot(x, y); >> xlabel( x = 0 : 2\pi ); >> ylabel( Sine of x ); >> title( Plot of the sine function );

Il comando grid visualizza le linee di una griglia in corrispondenza dei segni di graduazione degli assi di un diagramma. Occorre digitare grid on per attivare la griglia e grid off per disattivarla. MATLAB imposta automaticamente il valore minimo e massimo per gli assi. Per modificare le impostazioni predefinite si può utilizzare il comando axis: axis([xmin xmax ymin ymax])

>> x = [0 : pi/100 : 2*pi]; >> y = sin(x); >> plot(x, y); >> xlabel( x = 0 : 2\pi ); >> ylabel( Sine of x ); >> title( Plot of the sine function ); >> grid on >> axis([0 6.5-1.2 1.2]);

Il comando fplot interpreta la rappresentazione simbolica di una funzione, passata come argomento in formato testo, e ne disegna il grafico. >> fplot( string, [xmin xmax]) Il simbolo 'x' in string deve essere usato per la variabile indipendente. [xmin xmax] è l intervallo all interno del quale la funzione viene calcolata ed il grafico disegnato.

>> f = exp(-0.1*x) * sin(log(x + 1)) ; >> fplot(f, [0 20]); >> xlabel( x = 0 : 20 ), ylabel( f = exp(-0.1*x) * sin(log(x + 1)) ); >> title( fplot example );

Il comando subplot consente di generare all interno della stessa finestra grafica più diagrammi di dimensioni ridotte. Sintassi: subplot(m, n, p) La finestra grafica viene suddivisa in m x n pannelli rettangolari ed il successivo comando plot, disegna un grafico all interno del p-esimo pannello. Ad esmpio, subplot(3, 2, 4) crea 6 pannelli (3 x 2) e fa sì che il successivo comando plot disegni all interno del 4 pannello.

>> x = [0 : pi/100 : 2*pi]; >> y = sin(x); >> subplot(1, 2, 1); >> plot(x, y), xlabel( x = 0 : 2\pi ), ylabel( Sine of x ); >> y = exp(-x); >> subplot(1, 2, 2); >> plot(x, y), xlabel( x = 0 : 2\pi ), ylabel( Exp of x );

Si possono generare diagrammi sovrapposti passando come argomento al comando plot più coppie di vettori x e y. Per ogni coppia di vettori (x, y) viene generato un diagramma di colore diverso. MATLAB cicla automaticamente tra i colori disponibili. Tale configurazione può essere modificata a piacimento dall utente. Il comando legend permette di visualizzare una legenda per poter distinguere tra i diagrammi.

>> x = [0 : pi/100 : 2*pi]; >> y = sin(x); >> z = cos(x); >> w = exp(-x).* sin(x); >> plot(x, y, x, z, x, w); >> xlabel( x = 0 : 2\pi ); >> legend( Sin of x, Cos of x, Sin and Exp );

Il comando hold consente di sovrapporre un nuovo grafico ad un grafico già esistente Per attivare la sovrapposizione si digita hold on: d ora in poi ogni comando successivo plot opererà sulla stessa figura. Per disattivare la sovrapposazione si digita invece hold off: d ora in poi ogni successivo comando plot cancellerà la figura precedente e disegnerà una nuova figura. Per impostazione predefinita hold è off.

>> x = [0 : pi/100 : 2*pi]; >> y = sin(x); >> z = cos(x); >> w = exp(-x).* sin(x); >> plot(x, y); >> hold on; >> plot(x, z); >> plot(x, w); >> xlabel('x = 0 : 2\pi'); >> hold off;

Marker, colori e tipi di linea si specificano passando come argomento a plot una stringa i cui elementi sono codici associati allo specifico marker, colore o tipo di linea desiderato. Sintassi: plot(x, y, color_style_marker) Esempio: per marcare con crocette rosse le coppie di valori contenute nei vettori x e y e congiungere ciascun punto con una linea tratteggiata si scrive: plot(x, y, r--+ )

Tipi di marker: crocetta (+), cerchio (o), asterisco (*), simbolo per (x), quadrato (s), rombo (d), triangolo verso l alto (^), triangolo verso il basso (v), triangolo a destra (>), triangolo a sinistra (<), stella (p), esagono (h) Colori: ciano (c), magenta (m), giallo (y), rosso (r), verde (g), blu (b), bianco (w), nero (k) Tipi di linea: continua (-), tratteggiata (--), punteggiata (:), tratto e punto (-.)

>> x = [0 : pi/10 : 2*pi]; >> y = sin(x); >> z = cos(x); >> plot(x, y, 'r--o', x, z, 'b:s'); >> xlabel('x = 0 : 2\pi'); >> legend('sin of x', 'Cos of x'); Specificando solo 'ro' vengono stamapati solo i punti senza linea

Salvare le figure Quando si crea un diagramma, MATLAB genera una finestra grafica all interno della quale viene disegnato il diagramma. Per salvare il diagramma è sufficiente selezionare Save o Save as dal menu File che appare nella parte superiore di tale finestra grafica. Il diagramma viene salvato come opzione base in un FIG-file (file con estensione.fig), me si può scegliere anche una estensione diversa (es. jpeg) Il diagramma (solo nel caso di FIG-file) potrà essere quindi aperto in una nuova sessione di MATLAB, attraverso l opzione di menu File -> Open nel menu principale di MATLAB.

Heapsort Algoritmo di ordinamento detto Heap-Sort che ha le seguenti caratteristiche: T(n) = O(n log(n)) Alg. Ordinamento ottimale Ordina in loco. Usa la una struttura di dati heap. Heap binario = albero binario in cui ogni nodo figlio ha una chiave minore o uguale alla chiave del proprio nodo padre.

Heap Heap binario = albero binario in cui ogni nodo figlio ha una chiave minore o uguale alla chiave del proprio nodo padre. L albero è quasi completo : Completo su tutti i livelli tranne eventualmente sul livello più basso che è riempito da sinistra. Altezza dell albero : lunghezza del più lungo cammino discendente dalla radice ad una foglia.

Heap Proprietà di ordinamento parziale dello heap: Ogni nodo interno contiene un valore maggiore uguale del valore contenuto nei figli. Da ciò segue che: l elemento più grande dello heap è memorizzato nella radice. ogni nodo interno contiene un valore maggiore uguale del valore contenuto in tutti i suoi discendenti.

Heap Heapsize: numero di elementi nello heap Diverso in genere dalla lunghezza del vettore che lo contiene i=1 2 3 4 5 6 7 8 9 10 Length[A] 16 14 10 8 7 9 3 2 4 1 Heap-size[A] Heap-size[A] Length[A] Un albero binario quasi completo può essere descritto da un vettore in cui il figlio sinistro (left(i)) ed il figlio destro (right(i) di un nodo i si trovano nelle posizioni 2i e 2i+1 (se minori di heapsize) rispettivamente Il padre è in posizione floor(i/2), se tale valore è 1.

Altezza albero binario 2 14 16 i=1 3 10 Altezza di un nodo: numero di archi sul più lungo cammino dal nodo ad una foglia H = 3 4 8 5 7 6 9 3 7 Altezza dell'albero: massima altezza di un nodo 8 9 10 2 4 1 H = altezza albero binario; N = numero di elementi nell'albero Se l albero è completo: N = 1 +2 + 2 2 + + 2 H = 2 H *( 1 + (1/2) + + (1/2) H )= 2 H *(2-(1/2) H ) = 2 H+1 1 Se l albero non è completo: 2 H -1 < N < 2 H+1 1 H = Θ(log(n))

Heapify Supponiamo che A sia uno heap. Alteriamo il valore di A[1]. L array che otteniamo non è più un heap. I sottoalberi con radice in A[right(1)] ed A[left(1)] sono ancora heap. Dobbiamo scrivere una procedura che permuti gli elementi A[1],A[2],,A[heap-size[A]] in modo da ricostruire uno heap. Heapify(A,i) l left(i) r right(i) If (l heapsize(a)) and (A[l] > A[i]) then largest l else largest i If (r heapsize(a) )and(a[r] > A[largest]) then largest r If (largest i) then scambia(a[i], A[largest]) Heapify(A, largest)

Heapify function A = heapify(a,i, heapsize) l = 2*i; r = 2*i+1; A = a; if l<=heapsize && A(l) > A(i) largest = l; else largest = i; end if r<=heapsize && A(r) > A(largest) largest = r; end if largest ~= i tmp = A(i); A(i)=A(largest); A(largest) = tmp; A = heapify(a,largest,heapsize); end end

Buildheap La procedura Heapify può essere usata in modo bottom-up per convertire un vettore A[1 n], in uno heap di lunghezza n. Build-heap(A) heapsize(a) lenght(a) for i lenght[a]/2 down to 1 do Heapify(A,i) Complessità - Numero di nodi ad altezza h al più ceil(n/2^(h+1)) (si prova per induzione) - Altezza di uno heap con n elementi floor(log 2 n) log(n) T (n) h=0 h n 2 (h +1) n h=0 h 2 (h +1) n h=0 h 2 (h) 2 n O(n) h=0 h x h = x 1 x 2

Buildheap function A = buildheap(a) n = numel(a); A = a; for i = floor(n/2):-1:1 A=heapify(A,i,n); end end

Heapsort Heapsort(A) Build-heap(A) For i = length(a) down to 2 do scambia(a[1],a[i]) Heapsize(A) = Heapsize(A)-1 Heapify(A,1) O(n) O(n) O(n)*1 O(n)*1 O(n)*O(log(n)) Tempo di esecuzione : O(n log(n)) Ordinamento in loco

Heapsort function A = heapsort(a) A = buildheap(a); n = numel(a); heapsize = n; for i = n:-1:2 tmp = A(i); A(i)=A(1); A(1) = tmp; heapsize = heapsize - 1; A=heapify(A,1,heapsize); end end

Esercizi Scrivere una funzione MATLAB che prende in input una matrice e stampa sullo stesso grafico i valori ordinati di ogni riga della matrice (fatelo per dimensioni ridotte) Scrivere uno script che legge dal file dati.txt una matrice e ne stampa (sovrapposti) i vettori delle medie e delle deviazioni standard di ogni colonna Scrivere una funzione che prende in input un vettore e stampa sullo stesso grafico ma in sottosezioni diverse le funzioni fattoriale ed esponenziale

Esercizi Scrivere un script MATLAB che generi casualmente 100 vettori di 1000 interi compresi tra 1 e 1000000, ordini i vettori con gli algoritmi Heapsort, Insertion Sort e Selection Sort (minsort), e stampi sullo stesso grafico i tempi di esecuzione di ciascun algoritmo su ogni vettore in input con tre colori differenti, tre simboli e tre linee differenti. Adattare l'algoritmo HeapSort in modo da lavorare su vettori di stringhe (suggerimento:usare array di cell per rappresentare tutte le stringhe).