Comment extraire les diagonales d'une matrice dans Matlab et Octave
Pour extraire les diagonales d'une matrice dans Matlab et Octave, utilisez la fonction diag()
diag(M, k)
Le premier argument (M) est la matrice.
Le deuxième argument (k) est facultatif. C'est un entier qui indique la diagonale à extraire. Par défaut c'est k = 0 et la fonction extrait la diagonale principale de la matrice.
Note. Si le premier argument de la fonction diag() est un vecteur, la fonction crée une matrice diagonale dans laquelle la diagonale principale est constituée des éléments du vecteur.
Exemples
Exemple 1
Définir une matrice carrée
M=[[1 2 3];[4 5 6];[7 8 9]]
C'est une matrice carrée 3x3
$$ \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix} $$
Extraire la diagonale principale à l'aide de la fonction diag(M)
diag(M)
La fonction extrait la diagonale principale de la matrice
1
5
9
Exemple 2
Pour extraire la diagonale au-dessus de la diagonale principale, spécifiez le paramètre k = 1 dans la fonction diag()
diag(M,1)
Le résultat de sortie est
2
6
Exemple 3
Pour extraire la diagonale en dessous de la principale, utilisez la fonction diag() avec le paramètre k = -1
diag(M,-1)
Le résultat de sortie est
4
8
Exemple 4
Pour extraire la diagonale secondaire, inversez la matrice horizontalement avec la fonction fliplr() et extrayez la diagonale avec la fonction diag().
diag(fliplr(M))
Le résultat de sortie est la diagonale secondaire
3
5
7
Exemple 5
Pour extraire toutes les diagonales de la matrice avec une seule commande, tapez
>> spdiags(M)
La fonction sort un array
Chaque vecteur colonne de array est une diagonale de la matrice.
7 4 1 0 0
0 8 5 2 0
0 0 9 6 3
Le vecteur colonne central 1 5 9 est la diagonale principale de la matrice.
$$ \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$
Le vecteur colonne 4 8 0 est la diagonale sous la diagonale principale.
$$ \begin{pmatrix} 1 &2 & 3 \\ \color{red}4 & 5 & 6 \\ 7 & \color{red}8 & 9 \end{pmatrix} $$
Le vecteur colonne 0 2 6 est la diagonale au-dessus de la diagonale principale.
$$ \begin{pmatrix} 1 & \color{red}2 & 3 \\ 4 & 5 & \color{red}6 \\ 7 & 8 & 9 \end{pmatrix} $$