lettura facile

Estrarre la diagonale di una matrice su Matlab

In questa lezione ti spiego come fare l'estrazione degli elementi della diagonale di una matrice su Matlab.

Cos'è la diagonale di una matrice? La diagonale principale di una matrice è l'insieme degli elementi che si trovano sulla diagonale della matrice a partire dal primo elemento in alto a sinistra. Ad esempio, la diagonale principale in questa matrice sono gli elementi 1, 5, 9 evidenziati con il colore rosso. $$ M = \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$

Ti faccio un esempio pratico.

Crea una matrice quadrata 3x3 con tre righe e tre colonne con questi elementi.

>> M=[1 2 3; 4 5 6; 7 8 9]
M =
1 2 3
4 5 6
7 8 9

Ora digita la funzione diag(M) per estrarre gli elementi che si trovano sulla diagonale principale della matrice.

>> diag(M)
ans =
1
5
9

La funzione estrae gli elementi sulla diagonale principale della matrice.

In questo caso sono i valori 1, 5 e 9

$$ M = \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$

La funzione diag() ti permette di estrarre anche altre diagonali della matrice.

Ad esempio, digita diag(M,1) per estrarre gli elementi sulla diagonale sopra la diagonale principale

>> diag(M,1)
ans =
2
6

In questo caso la funzione diag(M,1) estrae i numeri 2 e 6 che si trovano sulla diagonale sopra quella principale.

$$ M = \begin{pmatrix} 1 & \color{red}2 & 3 \\ 4 & 5 & \color{red}6 \\ 7 & 8 & 9 \end{pmatrix} $$

Ora digita la funzione diag(M,2)

>> diag(M,2)
ans = 3

Quest'ultimo comando estae gli elementi sulla diagonale sopra la precedente ...e via dicendo.

$$ M = \begin{pmatrix} 1 & 2 & \color{red}3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix} $$

Se vuoi estrarre le diagonali sotto la diagonale principale indica un numero intero negativo come secondo parametro.

Ad esempio, digita diag(M,-1) per estrarre gli elementi della diagonale sotto la diagonale principale della matrice.

>> diag(M,-1)
ans =
4
8

La funzione diag(M,-1) estrae gli elementi che si trovano sotto la diagonale principale della matrice.

$$ M = \begin{pmatrix} 1 & 2 & 3 \\ \color{red}4 & 5 & 6 \\ 7 & \color{red}8 & 9 \end{pmatrix} $$

Se vuoi eliminare tutti gli altri elementi della matrice, lasciando solo quelli sulla diagonale principale, digita diag(diag(M))

>> diag(diag(M))
ans =
Diagonal Matrix
1 0 0
0 5 0
0 0 9

In questo modo ottieni una matrice diagonale.

$$ M = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 5 & 0 \\ 0 & 0 & 9 \end{pmatrix} $$

E per estrarre la matrice secondaria?

La diagonale secondaria (o antidiagonale) è la diagonale degli elementi della matrice presi da destra verso sinistra a partire dall'ultimo elemento in alto a destra.

Nel caso della matrice 3x3 dell'esempio precedente la diagonale secondaria è composta dagli elementi 3, 5, 7

$$ M = \begin{pmatrix} 1 & 2 & \color{red}3 \\ 4 & \color{red}5 & 6 \\ \color{red}7 & 8 & 9 \end{pmatrix} $$

Per estrarre la diagonale secondaria della matrice devi capovolgerla in orizzontale tramite la funzione fliplr()

Ad esempio, digita il comando diag(fliplr(M))

>> diag(fliplr(M))
ans =
3
5
7

La funzione diag(fliplr(M)) estrae gli elementi sulla diagonale secondaria della matrice

$$ M = \begin{pmatrix} 1 & 2 & \color{red}3 \\ 4 & \color{red}5 & 6 \\ \color{red}7 & 8 & 9 \end{pmatrix} $$

Nota. Anche in questo caso puoi usare il secondo parametro della funzione per estrarre le diagonali sopra o sotto la diagonale principale. Per estrarre quelle sopra la diagonale secondaria digita un numero intero positivo. Ad esempio diag(fliplr(M),1) estrae gli elementi 2 e 4 appena sopra la diagonale principale. $$ M = \begin{pmatrix} 1 & \color{red}2 & \color{green}3 \\ \color{red}4 & \color{green}5 & 6 \\ \color{green}7 & 8 & 9 \end{pmatrix} $$ Per estrarre le diagonali sotto la diagonale secondaria, invece, digita un numero intero negativo. Ad esempio diag(fliplr(M),-1) estrae gli elementi 6 e 8 appena sotto la diagonale principale. $$ M = \begin{pmatrix} 1 & 2 & \color{green}3 \\ 4 & \color{green}5 & \color{red}6 \\ \color{green}7 & \color{red}8 & 9 \end{pmatrix} $$ .

La funzione diag() ti permette di estrarre gli elementi sulle diagonali anche da una matrice rettangolare.

Ad esempio, crea una matrice rettangolare 3x4 con 3 righe e 4 colonne.

>> M2=[1 1 1 1 ; 2 2 2 2 ; 3 3 3 3]
M2 =
1 1 1 1
2 2 2 2
3 3 3 3

Poi digita il comando diag(M2)

>> diag(M2)
ans =
1
2
3

Il comando diag(M2) estrae gli elementi sulla diagonale da sinistra verso destra a partire dal primo elemento in alto a sinistra.

$$ M = \begin{pmatrix} \color{red}1 & 1 & 1 & 1 \\ 2 & \color{red}2 & 2 & 2 \\ 3 & 3 & \color{red}3 & 3 \end{pmatrix} $$

In questo modo puoi estrarre qualsiasi diagonale anche se la matrice non è una matrice quadrata.

 

Nota. Anche nel caso delle matrici rettangolari puoi estrarre le diagonali sopra o sotto la diagonale principale indicando rispettivamente un numero intero positivo o negativo come secondo parametro. Ad esempio, digita diag(M2,1) o diag(M2,-1) per le diagonali sopra e sotto quella principale e via dicendo diag(M2,2) o diag(M2,-2) per le successive.
come estrarre le diagonali da una matrice rettangolare
Per estrarre le diagonali secondarie dalla matrice rettangolare devi ribaltare la matrice da destra a sinistra. Ad esempio, per estrarre la diagonale secondaria digita diag(fliplr(M2)). In questo caso la diagonale secondaria parte dall'ultimo elemento in alto a destra della matrice rettangolare. $$ M = \begin{pmatrix} 1 & 1 & 1 & \color{red}1 \\ 2 & 2 & \color{red}2 & 2 \\ 3 & \color{red}3 & 3 & 3 \end{pmatrix} $$




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin