diag
Creare una matrice diagonale o ottenere gli elementi diagonali di una matrice
Descrizione
D = diag(
restituisce una matrice diagonale quadrata con gli elementi del vettore v
)v
sulla diagonale principale.
Esempi
Creare un vettore 1x5.
v = [2 1 -1 -2 -5];
Utilizzare diag
per creare una matrice con gli elementi di v
sulla 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
Creare una matrice con gli elementi di v
sulla prima diagonale superiore (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
Il risultato è una matrice 6x6. Quando si specifica un vettore di lunghezza n
come input, diag
restituisce una matrice quadrata di grandezza n+abs(k)
.
Acquisire gli elementi della diagonale principale di una matrice casuale 6x6.
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
Acquisire gli elementi della prima sottodiagonale (k=-1
) di A
. Il risultato presenta un elemento in meno rispetto alla diagonale principale.
x1 = diag(A,-1)
x1 = 5×1
10
10
2
9
2
Chiamando diag
due volte restituisce una matrice diagonale composta dagli elementi della diagonale della matrice originale.
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
Argomenti di input
Elementi della diagonale, specificati come vettore. Se v
è un vettore con N
elementi, diag(v,k)
è una matrice quadrata di ordine N+abs(k)
.
diag([])
restituisce una matrice vuota []
.
Tipi di dati: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
Supporto numeri complessi: Sì
Matrice di input. diag
restituisce un errore se ndims(A) > 2
.
diag([])
restituisce una matrice vuota []
.
Tipi di dati: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
Supporto numeri complessi: Sì
Numero della diagonale, specificato come numero intero. k=0
rappresenta la diagonale principale, k>0
è sopra la diagonale principale e k<0
è sotto la diagonale principale.
Per una matrice m x n, k
è nell'intervallo . Ad esempio, per le matrici con n maggiore di m, la diagonale principale k=0
è costituita dagli elementi con indici (1,1)
, (2,2)
, ..., (m,m)
. La k=1
sopra la diagonale principale è costituita dagli elementi con indici (1,2)
, (2,3)
, ..., (m,m+1)
. La k=-1
sotta la diagonale principale è costituita dagli elementi con indici (2,1)
, (3,2)
, ..., (m,m-1)
.
Suggerimenti
La
trace
di una matrice è uguale asum(diag(A))
.
Funzionalità estese
Note su utilizzo e limitazioni:
Se si fornisce
k
, deve essere un valore intero reale e scalare.Per input di grandezza variabile costituiti da vettori di lunghezza variabile (1x: o :x1),
diag
:Tratta l'input come un vettore
Restituisce una matrice con il vettore di input lungo la diagonale specificata
Per input di grandezza variabile non costituiti da vettori di lunghezza variabile,
diag
:Tratta l'input come una matrice
Non supporta gli input che sono vettori in fase di esecuzione
Restituisce un vettore di lunghezza variabile
Se l'input è di grandezza variabile (:m x :n) e ha forma 0x0 in fase di esecuzione, l'output è 0x1 e non 0x0. Tuttavia, se l'input è di grandezza costante 0x0, l'output è
[]
.Per input di grandezza variabile non costituiti da vettori di lunghezza variabile (1x: o :x1),
diag
tratta l'input come una matrice da cui estrarre un vettore della diagonale. Questo comportamento si verifica anche se l'array di input è un vettore in fase di esecuzione. Per forzarediag
a costruire una matrice da input di grandezza variabile che non siano 1x: o :x1, utilizzare:diag(x(:))
anzichédiag(x)
diag(x(:),k)
anzichédiag(x,k)
Note su utilizzo e limitazioni:
Se si fornisce
k
, deve essere un valore intero reale e scalare.Per input di grandezza variabile costituiti da vettori di lunghezza variabile (1x: o :x1),
diag
:Tratta l'input come un vettore
Restituisce una matrice con il vettore di input lungo la diagonale specificata
Per input di grandezza variabile non costituiti da vettori di lunghezza variabile,
diag
:Tratta l'input come una matrice
Non supporta gli input che sono vettori in fase di esecuzione
Restituisce un vettore di lunghezza variabile
Se l'input è di grandezza variabile (:m x :n) e ha forma 0x0 in fase di esecuzione, l'output è 0x1 e non 0x0. Tuttavia, se l'input è di grandezza costante 0x0, l'output è
[]
.Per input di grandezza variabile non costituiti da vettori di lunghezza variabile (1x: o :x1),
diag
tratta l'input come una matrice da cui estrarre un vettore della diagonale. Questo comportamento si verifica anche se l'array di input è un vettore in fase di esecuzione. Per forzarediag
a costruire una matrice da input di grandezza variabile che non siano 1x: o :x1, utilizzare:diag(x(:))
anzichédiag(x)
diag(x(:),k)
anzichédiag(x,k)
Questa funzione supporta completamente gli ambienti basati su thread. Per maggiori informazioni, vedere Run MATLAB Functions in Thread-Based Environment.
La funzione diag
supporta completamente gli array di GPU. Per eseguire la funzione su una GPU, specificare i dati di input come un gpuArray
(Parallel Computing Toolbox). Per maggiori informazioni, vedere Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Questa funzione supporta completamente gli array distribuiti. Per maggiori informazioni, vedere Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Cronologia versioni
Introduzione prima di 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.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)