diag
Créer une matrice diagonale ou obtenir les éléments de la diagonale d’une matrice
Description
Exemples
Créez un vecteur de 1 x 5.
v = [2 1 -1 -2 -5];
Utilisez diag pour créer une matrice avec les éléments de v sur la diagonale principale.
D = diag(v)
D = 5×5
2 0 0 0 0
0 1 0 0 0
0 0 -1 0 0
0 0 0 -2 0
0 0 0 0 -5
Créez une matrice avec les éléments de v sur la première diagonale supérieure (k=1).
D1 = diag(v,1)
D1 = 6×6
0 2 0 0 0 0
0 0 1 0 0 0
0 0 0 -1 0 0
0 0 0 0 -2 0
0 0 0 0 0 -5
0 0 0 0 0 0
Le résultat est une matrice de 6 x 6. Lorsque vous spécifiez un vecteur de longueur n en entrée, diag renvoie une matrice carrée de taille n+abs(k).
Obtenez les éléments de la diagonale principale d’une matrice aléatoire de 6 x 6.
A = randi(10,6)
A = 6×6
9 3 10 8 7 8
10 6 5 10 8 1
2 10 9 7 8 3
10 10 2 1 4 1
7 2 5 9 7 1
1 10 10 10 2 9
x = diag(A)
x = 6×1
9
6
9
1
7
9
Obtenez les éléments de la première diagonale inférieure (k=-1) de A. Le résultat contient un élément de moins que la diagonale principale.
x1 = diag(A,-1)
x1 = 5×1
10
10
2
9
2
Le fait d’appeler diag deux fois de suite renvoie une matrice diagonale composée des éléments de la diagonale de la matrice d’origine.
A1 = diag(diag(A))
A1 = 6×6
9 0 0 0 0 0
0 6 0 0 0 0
0 0 9 0 0 0
0 0 0 1 0 0
0 0 0 0 7 0
0 0 0 0 0 9
Arguments d'entrée
Éléments de la diagonale, spécifiés sous forme de vecteur. Si v est un vecteur à N éléments, diag(v,k) est une matrice carrée d’ordre N+abs(k).
diag([]) renvoie une matrice vide [].
Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Support des nombres complexes : Oui
Matrice en entrée. diag renvoie une erreur si ndims(A) > 2.
diag([]) renvoie une matrice vide [].
Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Support des nombres complexes : Oui
Numéro de la diagonale, spécifié sous forme de nombre entier. k=0 représente la diagonale principale, k>0 est au-dessus de celle-ci et k<0 est en dessous.
Pour une matrice de dimension m x n, k est compris dans la plage . Par exemple, pour les matrices où n est supérieur à m, la diagonale principale k=0 se compose des éléments ayant les indices (1,1), (2,2), ..., (m,m). k=1 est au-dessus de la diagonale principale et se compose des éléments ayant les indices (1,2), (2,3), ..., (m,m+1). k=-1 est en dessous de la diagonale principale et se compose des éléments ayant les indices (2,1), (3,2), ..., (m,m-1).

Conseils
La
traced’une matrice est égale àsum(diag(A)).
Capacités étendues
Notes d’usage et limitations :
Si vous spécifiez
k, il doit s’agir d’une valeur entière réelle et scalaire.Pour les entrées de taille variable qui sont des vecteurs de longueur variable (1 x : ou : x 1), la fonction
diag:Traite l’entrée comme un vecteur
Renvoie une matrice avec le vecteur en entrée le long de la diagonale spécifiée
Pour les entrées de taille variable qui ne sont pas des vecteurs de longueur variable, la fonction
diag:Traite l’entrée comme une matrice
Ne supporte pas les entrées qui sont des vecteurs au run-time
Renvoie un vecteur de longueur variable
Si l’entrée est de taille variable (:m x :n) et qu’elle est de la forme 0 x 0 au run-time, la sortie est de dimension 0 x 1 et non 0 x 0. En revanche, si l’entrée a une taille constante de 0 x 0, la sortie est
[].Pour les entrées de taille variable qui ne sont pas des vecteurs de longueur variable (1 x : ou : x 1), la fonction
diagtraite l’entrée comme une matrice dont elle extrait un vecteur diagonal. Ce comportement se produit même si le tableau en entrée est un vecteur au run-time. Pour obligerdiagà créer une matrice à partir d’entrées de taille variable qui ne sont pas de dimension 1 x : ni : x 1, utilisez :diag(x(:))au lieu dediag(x)diag(x(:),k)au lieu dediag(x,k)
Notes d’usage et limitations :
Si vous spécifiez
k, il doit s’agir d’une valeur entière réelle et scalaire.Pour les entrées de taille variable qui sont des vecteurs de longueur variable (1 x : ou : x 1), la fonction
diag:Traite l’entrée comme un vecteur
Renvoie une matrice avec le vecteur en entrée le long de la diagonale spécifiée
Pour les entrées de taille variable qui ne sont pas des vecteurs de longueur variable, la fonction
diag:Traite l’entrée comme une matrice
Ne supporte pas les entrées qui sont des vecteurs au run-time
Renvoie un vecteur de longueur variable
Si l’entrée est de taille variable (:m x :n) et qu’elle est de la forme 0 x 0 au run-time, la sortie est de dimension 0 x 1 et non 0 x 0. En revanche, si l’entrée a une taille constante de 0 x 0, la sortie est
[].Pour les entrées de taille variable qui ne sont pas des vecteurs de longueur variable (1 x : ou : x 1), la fonction
diagtraite l’entrée comme une matrice dont elle extrait un vecteur diagonal. Ce comportement se produit même si le tableau en entrée est un vecteur au run-time. Pour obligerdiagà créer une matrice à partir d’entrées de taille variable qui ne sont pas de dimension 1 x : ni : x 1, utilisez :diag(x(:))au lieu dediag(x)diag(x(:),k)au lieu dediag(x,k)
La fonction diag supporte entièrement les environnements basés sur des threads. Pour plus d’informations, consultez Run MATLAB Functions in Thread-Based Environment.
La fonction diag supporte entièrement les GPU arrays. Pour exécuter la fonction sur un GPU, spécifiez les données en entrée en tant que gpuArray (Parallel Computing Toolbox). Pour plus d’informations, consultez Exécuter les fonctions MATLAB sur un GPU (Parallel Computing Toolbox).
La fonction diag supporte entièrement les distributed arrays. Pour plus d’informations, consultez Exécuter les fonctions MATLAB avec des tableaux distribués (Parallel Computing Toolbox).
Historique des versions
Introduit avant R2006a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)