Come estrarre le diagonali di una matrice in Matlab e Octave
Per estrarre le diagonali di una matrice in Matlab e Octave usare la funzione diag()
diag(M, k)
Il primo argomento (M) è la matrice o la variabile che ospita la matrice.
Il secondo argomento (k) è facoltativo. È un numero intero che indica la diagonale da estrarre. Di default è k=0 e la funzione estrae la diagonale principale della matrice.
Nota. Se il primo argomento della funzione diag() è un vettore, la funzione crea una matrice diagonale (diagonal matrix) in cui la diagonale principale è composta dagli elementi del vettore.
Esempi
Esempio 1
Definire una matrice quadrata
M=[[1 2 3];[4 5 6];[7 8 9]]
E' una matrice quadrata 3x3
$$ \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix} $$
Estrarre la diagonale principale tramite la funzione diag(M)
diag(M)
La funzione estrae la diagonale principale della matrice
1
5
9
Esempio 2
Per estrarre la diagonale sopra la diagonale principale, indicare il parametro k=1 nella funzione diag()
diag(M,1)
Il risultato in output è
2
6
Esempio 3
Per estrarre la diagonale sotto quella principale, usare la funzione diag() con il parametro k=-1
diag(M,-1)
Il risultato in output è
4
8
Esempio 4
Per estrarre la diagonale secondaria, riflettere in orizzontale la matrice con la funzione fliplr() ed estrarre la diagonale con la funzione diag().
diag(fliplr(M))
Il risultato in output è la diagonale composta dagli elementi
3
5
7
Esempio 5
Per estrarre tutte le diagonali della matrice con un solo comando digita
>> spdiags(M)
La funzione restituisce in output dei vettori colonna.
Ogni vettore colonna è una diagonale della matrice.
7 4 1 0 0
0 8 5 2 0
0 0 9 6 3
Il vettore colonna centrale 1 5 9 è la diagonale principale della matrice.
$$ \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$
Il vettore colonna 4 8 0 è la diagonale sotto la diagonale principale.
$$ \begin{pmatrix} 1 &2 & 3 \\ \color{red}4 & 5 & 6 \\ 7 & \color{red}8 & 9 \end{pmatrix} $$
Il vettore colonna 0 2 6 è la diagonale sopra la diagonale principale.
$$ \begin{pmatrix} 1 & \color{red}2 & 3 \\ 4 & 5 & \color{red}6 \\ 7 & 8 & 9 \end{pmatrix} $$