Extraction de toutes les diagonales d'une matrice avec Octave

Dans le cadre de cette leçon, nous allons nous attarder sur la manière d'extraire toutes les diagonales d'une matrice au sein du logiciel Octave, en appuyant nos propos par un exemple pratique.

Qu'est-ce que les diagonales d'une matrice ? Lorsque l'on parle de diagonales d'une matrice, on fait référence aux éléments qui se trouvent sur les lignes imaginaires partant du coin supérieur droit vers le coin inférieur gauche de la matrice, et inversement. Pour illustrer, considérons cette matrice dont la diagonale principale est composée des éléments 1, 5, 9. $$ M = \begin{pmatrix} \color{red}1 & 2 & 3 \\ 4 & \color{red}5 & 6 \\ 7 & 8 & \color{red}9 \end{pmatrix} $$ La diagonale secondaire comprend les éléments 3, 5, 7 $$ M = \begin{pmatrix} 1 & 2 & \color{red}3 \\ 4 & \color{red}5 & 6 \\ \color{red}7 & 8 & 9 \end{pmatrix} $$

Allons-y avec un exemple concret.

Créez tout d'abord une matrice 3x3

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

Pour extraire l'ensemble des diagonales, la commande est spdiags()

>> spdiags(M)
ans =
7 4 1 0 0
0 8 5 2 0
0 0 9 6 3

Dans la matrice obtenue, chaque colonne représente une diagonale de notre matrice M.

La colonne rouge centrale illustre la diagonale principale, constituée des chiffres 1, 5, 9.

les diagonales d'une matrice

Si l'extraction de la seule diagonale principale est souhaitée, la commande est spdiags(M,0)

>> spdiags(M,0)
ans =
1
5
9

Pour extraire la diagonale située juste au-dessus de la diagonale principale, la commande est spdiags(M,1)

>> spdiags(M,1)
ans =
0
2
6

Si l'on souhaite au contraire extraire la diagonale juste en dessous de la diagonale principale, la commande est spdiags(M,-1)

>> spdiags(M,-1)
ans =
4
8
0

Pour l'extraction de toutes les diagonales secondaires de la matrice M, les commandes spdiags() et fliplr() sont à utiliser.

La fonction fliplr nous permet de retourner la matrice M, comme si on la lisait de droite à gauche.

C'est ce que réalise la commande spdiags(fliplr(M))

>> spdiags(fliplr(M))
ans =
9 6 3 0 0
0 8 5 2 0
0 0 7 4 1

Chaque colonne de cette nouvelle matrice représente une diagonale de la matrice initiale, lue de droite à gauche.

La colonne rouge centrale correspond à la diagonale secondaire, composée des chiffres 3, 5, 7.

la diagonale secondaire

Ainsi, il est possible d'extraire n'importe quelle diagonale de la matrice, selon vos besoins.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Tableaux dans Octave

Matrices dans Octave

FAQ

Struct et tableau cellulaire