SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
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
Sommario




         Introduzione
         Tipi di dato
         Controllo di flusso
         Funzioni




Ing. Andrea Spadaccini        DIIT - Universit` degli Studi di Catania
                                              a
Introduzione a GNU Octave
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Más contenido relacionado

La actualidad más candente

Classificazione pazienti con la SLA tramite SVM integration
Classificazione pazienti con la SLA tramite SVM integrationClassificazione pazienti con la SLA tramite SVM integration
Classificazione pazienti con la SLA tramite SVM integrationGiuseppe Luciano
 
12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatoriMajong DevJfu
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamicaguest60e9511
 
GFilosofi_neural-networks_2006
GFilosofi_neural-networks_2006GFilosofi_neural-networks_2006
GFilosofi_neural-networks_2006Gabriele Filosofi
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturatiMajong DevJfu
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concettiVincenzo De Maio
 

La actualidad más candente (8)

Classificazione pazienti con la SLA tramite SVM integration
Classificazione pazienti con la SLA tramite SVM integrationClassificazione pazienti con la SLA tramite SVM integration
Classificazione pazienti con la SLA tramite SVM integration
 
12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori
 
Features Selection's algorithms
Features Selection's algorithmsFeatures Selection's algorithms
Features Selection's algorithms
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamica
 
GFilosofi_neural-networks_2006
GFilosofi_neural-networks_2006GFilosofi_neural-networks_2006
GFilosofi_neural-networks_2006
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
 
Algorithmist guide II
Algorithmist guide IIAlgorithmist guide II
Algorithmist guide II
 

Último

Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024IISGiovanniVallePado
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxsasaselvatico
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxlorenzodemidio01
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxteccarellilorenzo
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxteccarellilorenzo
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxteccarellilorenzo
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...Nguyen Thanh Tu Collection
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereMarco Chizzali
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticanico07fusco
 

Último (20)

Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 

Introduzione a GNU Octave

  • 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