Laboratorio di INFORMATICA 15 ottobre 2009
GRAFICI Per ottenere il grafico di una funzione, devo: Preparare un vettore di ascisse Preparare un vettore di ordinate Scegliere la figura (opzionale)(istruzione figure) Preparare il riquadro (opzionale)(istruzione subplot) Fare il grafico (istruzione plot) Settare gli assi (opzionale)(istruzione axis) Inserire titoli ed etichette (istruzioni title, xlabel, ylabel,...)
Esempio 1 Disegnare il grafico di e x cos4x, con x su [0,2] e campioni equispaziati di 0.1 unità. >> x = [0 : 0.1 : 2]; >> f = cos(4*x).* exp(x); >> plot(x, f) Usiamo il colore rosso >> plot(x, f, r ) Per creare un vettore si può usare la terminologia [valore_iniziale : passo : valore_finale] Quando si moltiplicano 2 vettori elemento per elemento si deve utilizzare.* Alcuni colori: y giallo, k nero, b blu, g verde, c ciano, m magenta Usiamo una linea tratteggiata >> plot(x, f, -- ) Alcuni stili di linea: - solida, : a punti, -. tratto-punto
Esempio 1 (2) Mettiamo titolo ed etichette sugli assi >> title( Grafico di f = f=cos(4*x) exp(x) ) >> xlabel( x ) >> ylabel( y ) Disegnare in una nuova figura solo i campioni di f, usando pallini come markers >> figure(2) >> plot(x, f, o ) Alcuni markers: *, o, +,., x, s, d, ^, v, Disegnare solo i campioni di f, usando come markers asterischi di colore magenta >> plot(x, f, m* )
Esempio 1 (3) Plottare in una nuova figura la funzione f (linea continua di colore blu) e sovrapporre al grafico i campioni di f (marker: pallini rossi) >> figure(3) >> plot(x, f, b-, x, f, ro ) Oppure >> plot(x, f, b- ) >> plot(x, f, b- ) >> hold on >> plot(x, f, ro ) >> hold off
Esempio 1 (4) A partire dalla funzione f, creare una versione rumorosa g aggiungendo un rumore r (a media nulla e varianza 1): g = f+r >> r = randn(1, length(f)); >> g = f + r; Plottare in una nuova figura la funzione g usando una linea di colore nero >> figure(4) >> plot(x, g, k )
Esempio 1 (5) All interno della stessa figura, ma su due riquadri diversi: plottare nel primo riquadro la funzione f (linea continua blu) con sovrapposti i suoi campioni (marker: x rosse). Plottare nel secondo riquadro la funzione g (linea continua nera) con sovrapposti i suoi campioni (marker: x verdi). >> figure() >> subplot(2,1,1) >> plot(x, f) >> hold on >> plot(x, f, rx ) >> hold off >> subplot(2,1,2) >> plot(x, g, k ) >> hold on >> plot(x, g, gx ) >> hold off f g
L istruzione Subplot L istruzione subplot(m,n,k) crea una figura contenente M*N riquadri, distribuiti su M righe ed N colonne. L indice K indica che il plot che segue, con annessi title, xlabel, etc.., si riferisce al K-esimo riquadro (con K che può assumere valori fra 1 e M*N) prima del plot, subplot(2,2,4) prima del plot, subplot(6,3,5) prima del plot, subplot(6,1,6) 8
Ricapitolando Creazione di vettori per le ascisse e le ordinate Creazione figura Uso del comando plot Diversi stili di linea Diversi tipi di marker Diversi colori Inserimento di titolo ed etichette (title, xlabel, ylabel) Grafici sovrapposti (hold on, hold off) Più riquadri su un immagine (subplot)
Gestione delle variabili nel workspace who produce la lista delle variabili nel workspace whos la lista contiene anche informazioni su tipo e dimensioni clear all elimina tutte le variabili nel workspace clear <Variabile> cancella solo la variabile con nome Variabile save <File> salva nel file File.mat tutte le variabili del workspace load <File> carica nel workspace tutte le variabili presenti in File.mat save <File> <Variabili> salva nel file File.mat le variabili in Variabili load <File> <Variabili> carica nel workspace le variabili Variabili del file File.mat
Esempi di matrici particolari A=[ ] : matrice vuota A=eye(10) matrice identità 10x10 A=zeros(3,5) matrice 3x5 con elementi tutti nulli A=ones(3,5) matrice 3x5 con elementi tutti pari a 1 A=diag([3, 5, 6]) matrice 3x3, con elementi sulla diagonale specificati
script Gli script sono delle sequenze di comandi (ossia dei programmi), salvati su files con estensione.m che si eseguono invocandone il nome dalla command window. Non ricevono variabili in ingresso né in uscita. Al termine dell esecuzione del programma, tutte le variabili che sono state definite si trovano nel workspace. Vengono salvati con estensione.m. Per poterli invocare dalla command window, devo accertarmi di averli salvati nel path corrente.
Script di prova da riga di comando - ls: visualizza le cartelle ed i file disponibili nella posizione attuale - cd Desktop: ci si sposta sul Desktop - mkdir esercizi: crea una cartella chiamate esercizi - cd esercizi: ci si sposta nella cartella esercizi - ls: visualizza il contenuto della cartella corrente (dovrebbe essere vuota) - aprire l editor di Octave (File Apri Editor) - scrivere la sequenza di istruzioni da eseguire - salvare il file con nome prova.m nella cartella esercizi precedentemente creata - passare alla finestra di comando Octave (menu a tendina in alto a destra, indica le opzioni Editor/Finestra di Comando) - ls: visualizza il contenuto della cartella corrente (dovrebbe mostrare il file prova.m ) - eseguire le istruzioni contenute in prova.m scrivendo in Octave il comando prova
Script di prova da interfaccia grafica - aprire l editor di Octave (File Apri Editor) - scrivere la sequenza di istruzioni da eseguire - salvare il documento appena scritto nella cartella Desktop/esercizi chiamandolo prova.m, cliccando sul pulsante di salvataggio (il dischetto) e creando la cartella con il pulsante di creazione cartella (simbolo della cartella con l asterisco, come in Windows) - passare alla finestra di comando Octave (menu a tendina in alto a destra, indica le opzioni Editor/Finestra di Comando) - posizionarsi nella cartella in cui è presente il file appena creato navigando le cartelle presenti selezionando File Choose Directory - ls: visualizza il contenuto della cartella corrente (dovrebbe mostrare il file prova.m ) - eseguire le istruzioni contenute in prova.m scrivendo in Octave il comando prova
Esempio 2 Scaricare il file gravity_data.txt dal link http://www.dei.unipd.it/~enrigri/didattica_geo_0910_materiale.html e salvarlo nella propria home di lavoro Creare uno script in cui si deve: 1) Caricare una matrice (123 x 5) che presenta sulle diverse colonne 123 misurazioni di gravità effettuate da 5 diverse stazioni di controllo 2) Plottare su una figura l andamento delle gravità misurate dalla prima stazione (linea continua blu) 3) Calcolare la media delle gravità misurate dalla prima stazione 4) Disegnare (sovrapponendola alla prima) una linea corrispondente alla gravità media calcolata (linea a punti rossa).
Esempio 2 -soluzione 1) Caricare una matrice (100 x 5) che presenta sulle diverse colonne 100 misurazioni di gravità effettuate da diverse stazioni di controllo >> dati = load( gravity_data.txt ); 2) Plottare su una figura l andamento delle gravità misurate dalla prima stazione (linea continua blu) >> figure(1) >> dati1stazione = dati(:,1); >> plot(dati1stazione)
Esempio 2 -soluzione 3) Calcolare la media delle gravità misurate dalla prima stazione >> media1stazione = mean(dati1stazione); 4) Disegnare (sovrapponendola alla prima) una linea corrispondente alla gravità media calcolata (linea a punti rossa). >> figure(1) >> hold on >> x = [1:1:length(dati1stazione)]; >> y = media1stazione * ones(1, length(dati1stazione) ); >> plot(x, y, r: ) >> hold off
Esercizio Creare uno script in cui si deve: 1) Caricare la matrice di dati dell esempio precedente 2) Plottare su una figura l andamento delle gravità misurate dalla seconda stazione (linea continua blu) 3) Calcolare la massima delle gravità misurate dalla seconda stazione 4) Calcolare la minima delle gravità misurate dalla seconda stazione 5) Plottare in corrispondenza del massimo e del minimo due markers sovrapposti al grafico del punto 2. Suggerimento: [m mi] = max(v); restituisce in m il valore massimo presente nel vettore v e in mi il suo indice (la sua posizione) all interno del vettore stesso. Analogamente fa il comando [p pi] = min(v); per il minimo