Introduzione a GNU Octave

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Introduzione a GNU Octave - Presentation Transcript

    1. Introduzione a GNU Octave Ing. Andrea Spadaccini a.spadaccini@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Universit` di Catania a 21 Aprile 2009
    2. Sommario Introduzione Tipi di dato Controllo di flusso Funzioni Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    3. Introduzione (I) Cos’` GNU Octave? e ` E un linguaggio di alto livello destinato principalmente ad elaborazioni numeriche ` E compatibile a livello di sintassi con MatlabTM Perch´ preferire GNU Octave a MatlabTM ? e GNU Octave ` software libero → sono garantite 4 libert` fondamentali: e a Libert` di usare il programma per qualsiasi scopo a 1 Libert` di studiare il programma e modificarlo a 2 Libert` di copiare il programma a 3 Libert` di migliorare il programma e redistribuirlo a 4 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    4. Convenzioni Input/Output dell’interprete di Octave >> input inserito output fornito da Octave Esempio >> 1 + 1 ans = 2 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    5. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Parte I Tipi di dato Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    6. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Tipi di dato numerici (I) Scalari Matrici (e vettori) Scalari >> 42 >> 4.2e1 >> 30 + 2i Vettori >> [1 2 3 4 10] ans = 1 2 3 4 10 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    7. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Tipi di dato numerici (II) Matrici >> [1 2; 3 4] ans = 12 34 Costanti >> e ans = 2.7183 >> pi ans = 3.1416 >> i ans = 0 + 1i Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    8. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Funzioni che generano matrici (I) Matrice identit` a >> eye(2) ans = 10 01 Matrici composte da soli 1 o 0 >> ones(2) ans = 11 11 >> zeros(2, 3) ans = 000 000 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    9. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Funzioni che generano matrici (II) Numeri pseudo-casuali >> rand() ans = 0.021416 >> rand(1, 3) ans = 0.38035 0.29420 0.69839 >> rand(2) ans = 0.40080 0.60590 0.26180 0.13349 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    10. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Variabili Tipizzazione Octave ` un linguaggio tipizzato: e fortemente: la conversione tra tipi va fatta in maniera esplicita dinamicamente: ciascuna variabile pu` contenere diversi tipi di o dato (non contemporaneamente, ovviamente) Assegnazione di un valore ad una variabile >> x = 1 x=1 >> x = rand(1, 4) x= 0.59510 0.52206 0.72653 0.88393 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    11. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Operatori aritmetici Tabella dei principali operatori aritmetici: somma x+y sottrazione x-y moltiplicazione (se x ed y sono matrici, x*y moltiplicazione tra matrici) x .* y moltiplicazione elemento per elemento divisione (se x ed y sono matrici, x/y ` equivalente a inv(y’) * x’) e x ./ y divisione elemento per elemento elevamento a potenza x^y x .^ y elevamento a potenza elemento per elemento Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    12. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Esempi su operatori aritmetici (I) Moltiplicazioni >> A = [2 3 4; 5 6 7; 8 9 10]; >> B = [2; 3; 4]; >> A *B ans = 29 56 83 >> A *2 ans = 468 10 12 14 16 18 20 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    13. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Esempi su operatori aritmetici (II) Divisioni >> A ./ 2 ans = 1.000 1.500 2.000 2.500 3.000 3.500 4.000 4.500 5.000 >> A / B ans = 1.0000 1.93103 2.86207 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    14. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Esempi su operatori aritmetici (III) Potenze >> A .^ 2 ans = 4 9 16 25 36 49 64 81 100 >> A ^ 2 ans = 51 60 69 96 114 132 141 168 195 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    15. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Intervalli Un intervallo ` un vettore composto da numeri, definito tramite la e seguente notazione: inizio:intervallo:fine Esempi >> 1:4 ans = 1234 >> 1:4:40 ans = 1 5 9 13 17 21 25 29 33 37 >> 1:0.1:2 ans = 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    16. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Indicizzazione di matrici L’indicizzazione avviene tramite l’operatore (), specificando due indici: M(idx1, idx2). Ciascuno dei due indici pu` essere: o Uno scalare Un vettore (quindi anche un intervallo) Il carattere :, che indica di selezionare tutta la riga (o colonna) in oggetto Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    17. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Esempi di indicizzazione (I) >> a = [1 2 3; 4 5 6; 7 8 9]; Selezione dell’elemento (i, j) >> a(2,1) ans = 4 Selezione di una colonna >> a(:,2) ans = 2 5 8 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    18. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Esempi di indicizzazione (II) >> a = [1 2 3; 4 5 6; 7 8 9]; Selezione di una riga >> a(2,:) ans = 456 Selezione di parte di una riga >> a(2,1:2) ans = 45 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    19. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Stringhe Una stringa ` una sequenza di caratteri racchiusa tra apici. e >> s = ’ciao’ Concatenazione >> strcat(’c’, ’iao’, ’ ’, ’mondo’) ans = ciao mondo Confronto Si usa la funzione strcmp, che per` funziona al contrario rispetto o all’equivalente C, ovvero torna 1 se le stringhe sono uguali, 0 altrimenti. >> strcmp(s, ’ciao’) ans = 1 >> s == ’ciao’ ans = 1111 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    20. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Conversione tra tipi numerici e stringhe Tipo numerico → stringa: num2str int2str mat2str Stringa → tipo numerico: str2num Output formattato su stringa: sprintf Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    21. Tipi di dato numerici Variabili Operatori aritmetici Intervalli Indicizzazione di matrici Stringhe Stampa di una stringa dal prompt Funzione disp(stringa) Esempio disp(’ciao’) stampa la stringa ciao. (com’era prevedibile) Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    22. Operatori di confronto Costrutto if Costrutto for Costrutto while Parte II Controllo di flusso Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    23. Operatori di confronto Costrutto if Costrutto for Costrutto while Operatori di confronto Gli operatori di confronto lavorano elemento per elemento. x<y x <= y x == y x >= y x>y x ∼= y (oppure x != y, ma non funziona in MatlabTM ) x&y x|y Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    24. Operatori di confronto Costrutto if Costrutto for Costrutto while Esempi di confronto (I) Tra scalari >> 1 > 2 ans = 0 >> 1 & 0 ans = 0 >> 1 & 1 ans = 1 >> 1 | 1 ans = 1 Tra vettori (o matrici) e scalari >> [0 1 2 3 4 5 6] < 3 ans = 1110000 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    25. Operatori di confronto Costrutto if Costrutto for Costrutto while Esempi di confronto (II) Tra vettori omogenei (o matrici omogenee) >> [1 3 4 5] <= [4 1 4 4] ans = 10 10 >> [1 3; 4 5] <= [4 1; 4 4] ans = 10 10 In generale, gli operatori di confronto si utilizzano per: Controllo di flusso Ricerca di elementi in matrici o vettori che soddisfino determinate condizioni Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    26. Operatori di confronto Costrutto if Costrutto for Costrutto while Costrutto if Sintassi if condizione istruzioni elseif condizione-2 altre istruzioni ... else condizione-n ulteriori istruzioni end Note I blocchi elseif ed else sono opzionali Possono esserci diversi blocchi elseif, ma un solo blocco else Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    27. Operatori di confronto Costrutto if Costrutto for Costrutto while Esempio di costrutto if Codice dell’esempio a = 1; if a < 1 disp(’< 1’) elseif a > 1 disp(’> 1’) else disp(’= 1’) end Risultato dell’esecuzione? La stampa della stringa ’= 1’. Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    28. Operatori di confronto Costrutto if Costrutto for Costrutto while Costrutto for Sintassi for identificatore = espressione istruzioni end Note L’identificatore indica una variabile L’espressione pu` essere un dato di qualsiasi tipo (generalmente ` o e un intervallo) Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    29. Operatori di confronto Costrutto if Costrutto for Costrutto while Esempi di costrutto for (I) Codice dell’esempio for i = 0 : 10 : 50 disp(i) end Risultato dell’esecuzione? 0 10 20 30 40 50 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    30. Operatori di confronto Costrutto if Costrutto for Costrutto while Esempi di costrutto for (II) Codice dell’esempio A = (1:10) .^ 2; for i = 1 :length(A) A(i) = sqrt(A(i)); end Risultato dell’esecuzione? A = [1 2 3 4 5 6 7 8 9 10] Attenzione Il codice ` sintatticamente corretto, ed esegue le operazioni che ci e aspettiamo, ma quando ` possibile ` meglio evitare di effettuare cicli, e e vettorializzando il codice. In questo caso, A = sqrt(A); sortisce lo stesso effetto. Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    31. Operatori di confronto Costrutto if Costrutto for Costrutto while Costrutto while Sintassi while condizione istruzioni end Note La condizione generalmente effettua un confronto su una variabile che viene modificata durante il blocco di istruzioni, in modo da potere uscire, prima o poi, dal ciclo Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    32. Operatori di confronto Costrutto if Costrutto for Costrutto while Esempio di costrutto while Codice dell’esempio x = 10; while x > 0 x = x - 1; disp(x) end Risultato dell’esecuzione? Stampa dei numeri da 9 ad 1 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    33. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Parte III Funzioni Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    34. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Definizione di funzioni Quando si scrivono programmi non banali, ` fondamentale suddividerli in e unit` logiche (funzioni), ciascuna con uno scopo ben preciso, in modo a che siano facilmente verificabili ed eventualmente riutilizzabili. Sintassi function [ valori-di-ritorno ] = funzione(parametri) corpo della funzione end Valori di ritorno Diversamente da linguaggi come il C, in Octave ` possibile creare e funzioni che abbiano pi` di un valore di ritorno u Ciascun valore di ritorno va creato all’interno della funzione, e non va ritornato esplicitamente Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    35. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Esempio: somma degli elementi di un vettore Corpo della funzione function s = somma(vettore) s = 0; for i = 1 : length(vettore) s = s + vettore(i); end end Esempi di utilizzo >> somma([1 2 3 4 5 6]) ans = 21 >> 3 * somma([1 2 3]) ans = 18 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    36. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Esempio: Ricerca minimo, massimo e media di un vettore Attenzione La funzione che verr` mostrata non ` scritta bene, ed ha uno scopo a e puramente didattico. Ecco un elenco di difetti della funzione: Duplica funzionalit` gi` presenti nella libreria standard aa Esegue troppe operazioni, non ha uno scopo univoco Non esegue controlli sui dati in input Non ` vettorializzata e Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    37. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Codice della funzione min max avg function [minimo massimo media] = min max avg(vettore) somma = massimo = 0; minimo = Inf; for i = 1 : length(vettore) if vettore(i) > massimo massimo = vettore(i); end if vettore(i) < minimo minimo = vettore(i); end somma = somma + vettore(i); end media = somma / length(vettore); end Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    38. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Utilizzo della funzione min max avg >> min max avg(1:10) ans = 1 >> m = min max avg(1:10) m=1 >> [m mx] = min max avg(1:10) m=1 mx = 10 >> [m mx av] = min max avg(1:10) m=1 mx = 10 av = 5.5000 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    39. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Aiuto! La funzione help La funzione help, seguita da un comando, fornisce tutte le informazioni sul comando in oggetto. Utile per verificare parametri e valori di ritorno delle funzioni La funzione doc La funzione doc, seguita da una stringa, cerca nel manuale di Octave una tematica affine e ne mostra l’help Generalmente il risultato ` pi` approfondito di help, e mostra anche eu argomenti correlati Per confrontare i due, digitare ad esempio help help e doc help. Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    40. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Massimo, minimo e media di un vettore Le funzioni max e min Trovano il valore massimo (o minimo) di un vettore e lo restituiscono Se chiamate con due valori di ritorno, restituiscono anche l’indice del massimo (minimo) La funzione mean Calcola la media dei valori di un vettore Ha un parametro opzionale che consente di specificare il tipo di media (aritmetica, geometrica, armonica) Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    41. Definizione di funzioni Esempi Alcune utili funzioni della libreria standard Altre funzioni che operano su vettori o matrici rows(A): numero di righe di A columns(A): numero di colonne di A size(A): dimensioni di A (valori di ritorno multipli) sum(A): A vettore → somma degli elementi; A matrice → somma per colonne; somma di tutti gli elementi di una matrice: sum(sum(A)) sort(A): ordina gli elementi di un vettore in ordine crescente det(A): determinante di una matrice inverse(A): inversa di una matrice quadrata rank(A): rango di una matrice eig(A): autovettori (ed autovalori) di una matrice Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    42. Riferimenti Sito ufficiale di GNU Octave http://www.octave.org Documentazione John W. Eaton et al. GNU Octave Manual - http://www.gnu.org/software/octave/doc/interpreter/ Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    43. Licenza Licenza Creative Commons Questo lavoro ` rilasciato sotto licenza Creative Commons e Attribution-Share Alike 2.5 Italy (http://creativecommons.org/licenses/by-sa/2.5/it/) Significato della licenza La presentazione ` liberamente scaricabile e redistribuibile per e qualsiasi fine ` E necessario citare l’autore ` E necessario redistribuire secondo gli stessi termini eventuali lavori derivati da questa presentazione Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a Introduzione a GNU Octave
    SlideShare Zeitgeist 2009

    + Andrea SpadacciniAndrea Spadaccini Nominate

    custom

    662 views, 0 favs, 3 embeds more stats

    Introduction to GNU Octave (in Italian)

    More info about this document

    CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

    Go to text version

    • Total Views 662
      • 655 on SlideShare
      • 7 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 17
    Most viewed embeds
    • 3 views on http://flaviosavio.altervista.org
    • 3 views on http://www.tomaluca.altervista.org
    • 1 views on http://lechonomico.blogspot.com

    more

    All embeds
    • 3 views on http://flaviosavio.altervista.org
    • 3 views on http://www.tomaluca.altervista.org
    • 1 views on http://lechonomico.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories