venerdì 8 ottobre 2010

OCTAVE: inizializzare una matrice sparsa

Il seguente comando per Octave
 Q = sparse([2 3 7],[1 2 7],[1 1 1],7,7) 
genera una matrice sparsa di dimensioni 7x7 in cui solo tre elementi sono diversi da 0 (e solo questi tre elementi sono effettivamente memorizzati): l'elemento in posizione (2,1), quello in posizione (3,2) e quello in posizione (7,7), tutti assumono valore 1.
Dei cinque parametri del comando, infatti, il primo vettore rappresenta l'insieme ordinato degli indici di riga, il secondo è il vettore ordinato degli indici di colonna e il terzo è il vettore, ancora ordinato, dei valori. I valori non nulli possono essere ancor più facilmente individuati sovrapponendo i tre vettori:
  riga      [2 3 7] 
colonna [1 2 7]
valore [1 1 1]

Il quarto ed il quinto parametro rappresentano le dimensioni complessive della matrice, in assenza di questi due parametri, Octave assume come dimensione della matrice i due indici massimi per riga e per colonna.
Se due valori differenti per lo stesso elemento vengono impostati, di default i due valori vengono sommati. Se si desidera che l'ultimo valore impostato sia l'unico corretto allora è necessario utilizzare un sesto argomento, in questo modo:
 Q = sparse([2 3 7 2],[1 2 7 1],[1 1 1 2],7,7,"unique") 
che, in questo caso, fa si che il valore associato alla posizione (2,1) sia pari a 2.

Nessun commento:

Posta un commento