Matrice diagonale MATLAB

Ammar Ali 30 janvier 2023
  1. Créer une matrice diagonale en utilisant la fonction diag() dans MATLAB
  2. Créer une matrice diagonale en utilisant la fonction spdiags() dans MATLAB
Matrice diagonale MATLAB

Dans ce tutoriel, nous aborderons comment créer une matrice diagonale en utilisant les fonctions diag() et spdiags() dans MATLAB.

Créer une matrice diagonale en utilisant la fonction diag() dans MATLAB

Pour faire une matrice diagonale ou pour obtenir les entrées diagonales d’une matrice, vous pouvez utiliser la fonction diag() dans MATLAB. Par exemple, faisons une matrice diagonale à partir d’un vecteur donné. Voir le code ci-dessous.

vector = [1 2 3 4 5];
diagonal = diag(vector)

Production:

diagonal =

     1     0     0     0     0
     0     2     0     0     0
     0     0     3     0     0
     0     0     0     4     0
     0     0     0     0     5

Dans le code ci-dessus, nous avons fait une matrice diagonale 5x5 avec les entrées diagonales stockées dans la variable vector. La fonction diag() crée une matrice carrée en fonction du nombre d’éléments présents à l’intérieur du vecteur donné. Si le nombre d’éléments est de 5, alors la matrice diagonale sera 5x5. Vous pouvez également changer la position de la diagonale en utilisant un deuxième argument à l’intérieur de la fonction diag(). Si le deuxième argument est égal à 0, le vecteur sera placé sur la diagonale principale. Si le deuxième argument est supérieur à 0, le vecteur sera placé au-dessus de la diagonale principale. Si le deuxième argument est inférieur à 0, le vecteur sera placé sous la diagonale principale. Par exemple, plaçons le vecteur au-dessus de la diagonale principale. Voir le code ci-dessous.

vector = [1 2 3 4 5];
diagonal = diag(vector,1)

Production:

diagonal =

     0     1     0     0     0     0
     0     0     2     0     0     0
     0     0     0     3     0     0
     0     0     0     0     4     0
     0     0     0     0     0     5
     0     0     0     0     0     0

Dans le code ci-dessus, nous avons créé une matrice diagonale avec les éléments placés au-dessus de la diagonale principale. Comme vous pouvez le voir, la taille de la diagonale est maintenant 6x6 car le vecteur est placé au-dessus de la diagonale principale, et pour s’assurer que tous les éléments sont placés à l’intérieur de la matrice, la taille de la matrice a augmenté. Vous pouvez également utiliser la fonction diag() pour obtenir les entrées diagonales d’une matrice. Par exemple, récupérons les principales entrées diagonales d’une matrice donnée. Voir le code ci-dessous.

vector = [1 2 3;4 5 6;7 8 9]
diagonal = diag(vector)

Production:

vector =

     1     2     3
     4     5     6
     7     8     9


diagonal =

     1
     5
     9

Dans le code ci-dessus, nous avons utilisé la fonction diag() pour trouver les entrées diagonales de la matrice donnée, et vous pouvez voir que la fonction a renvoyé les entrées diagonales de la matrice donnée. Vous pouvez également obtenir les entrées diagonales au-dessus et en dessous de la diagonale principale en utilisant le deuxième argument à l’intérieur de la fonction diag() comme nous l’avons utilisé ci-dessus pour faire la matrice diagonale avec des éléments au-dessus de la diagonale principale. Vérifiez ce lien pour plus d’informations sur la fonction diag().

Créer une matrice diagonale en utilisant la fonction spdiags() dans MATLAB

Pour faire une matrice diagonale avec plus d’une diagonale ou pour obtenir toutes les entrées diagonales d’une matrice, vous pouvez utiliser la fonction spdiags() dans MATLAB. Le premier argument passé à l’intérieur de la fonction spdiags() sont les valeurs, le deuxième argument est les places diagonales, et le troisième et quatrième argument est la taille de la matrice diagonale. Par exemple, faisons une matrice tridiagonale à partir d’un vecteur donné. Voir le code ci-dessous.

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix = full(diagonal)

Production:

matrix =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5

Dans le code ci-dessus, nous avons fait une matrice tridiagonale 5x5 avec les entrées diagonales stockées à l’intérieur des trois variables: v1, v2 et v3. Vous pouvez créer la matrice diagonale avec autant de valeurs que vous le souhaitez. Vous pouvez également changer les valeurs diagonales d’une matrice donnée en utilisant la fonction springs(). Pour ce faire, transmettez les nouvelles valeurs dans le premier argument, la place des valeurs comme deuxième argument et la matrice dont vous souhaitez modifier les valeurs comme troisième argument. Par exemple, modifions les principales entrées diagonales de la matrice tridiagonale ci-dessus. Voir le code ci-dessous.

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix1 = full(diagonal)

v4 = [9 9 9 9 9].';
diagonal = spdiags(v4,0,diagonal);
matrix2 = full(diagonal)

Production:

matrix1 =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5


matrix2 =

     9     3     0     0     0
     2     9     3     0     0
     0     2     9     3     0
     0     0     2     9     3
     0     0     0     2     9

Dans le code ci-dessus, nous avons changé les valeurs de la diagonale principale de matrix1. Les valeurs sont modifiées et la nouvelle matrice est enregistrée dans la variable matrix2. Vous pouvez également extraire toutes les entrées diagonales non nulles d’une matrice donnée en utilisant la fonction spdaigs(). Par exemple, extrayons les entrées non nulles de la matrice ci-dessus. Voir le code ci-dessous.

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix = full(diagonal)

diag_Values = spdiags(matrix)

Production:

matrix =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5


diag_Values =

     2     1     0
     2     2     3
     2     3     3
     2     4     3
     0     5     3

Les valeurs diagonales de la matrice donnée sont extraites et stockées dans la variable diag_values. Les valeurs diagonales sont stockées dans les colonnes de la matrice. Les premières entrées diagonales sont stockées dans la première colonne et ainsi de suite. Vérifiez ce lien pour plus d’informations sur la fonction diag().

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - MATLAB Matrix