Come estrarre tutte le diagonali di una matrice su Matlab e Octave
Per estrarre una diagonale da una matrice su Matlab o Octave utilizzo la funzione diag.
diag(M,k)
Il parametro M è una matrice quadrata mentre k è un numero intero che indica l'ordine della diagonale rispetto alla diagonale principale.
Ad esempio, definisco la matrice quadrata M di tipo 3x3
La diagonale principale della matrice la ottengo semplicemente digitando la funzione diag(M) senza il secondo parametro che di default è k=0.
Le altre diagonali sopra o sotto la diagonale principale indicando il numero intero k come secondo parametro
Dove k=1 è la diagonale sopra la diagonale principale, k=2 quella ancora più sopra.
Mentre k=-1 è la diagonale sotto la diagonale principale, k=-2 quella ancora più sotto.
Per estrarre la diagonale secondaria rifletto la matrice in orizzontale con la funzione fliplr() poi estraggo la diagonale.
Il risultato è la diagonale secondaria, ossia la diagonale che inizia dall'elemento in alto a destra e termina con l'elemento in basso a sinistra.
Anche in questo caso posso estrarre le altre diagonali secondarie sopra la diagonale secondaria indicando come secondo parametro k=1,2, ...
E quelle sotto la diagonale secondaria indicando k=-1,-2, ...
Grazie a questi metodi estraggo tutte le diagonali della matrice.
E così via.