diag
Crear una matriz diagonal u obtener elementos diagonales de una matriz
Descripción
D = diag(
devuelve una matriz diagonal cuadrada con los elementos del vector v
)v
en la diagonal principal.
Ejemplos
Cree un vector de 1 por 5.
v = [2 1 -1 -2 -5];
Utilice diag
para crear una matriz con los elementos de v
en la diagonal principal.
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
Cree una matriz con los elementos de v
en la primera superdiagonal (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
El resultado es una matriz de 6 por 6. Al especificar un vector de longitud n
como entrada, diag
devuelve una matriz cuadrada del tamaño n+abs(k)
.
Obtenga los elementos de la diagonal principal de una matriz de 6 por 6 aleatoria.
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
Obtenga los elementos de la primera subdiagonal (k=-1
) de A
. El resultado tiene un elemento menos que la diagonal principal.
x1 = diag(A,-1)
x1 = 5×1
10
10
2
9
2
Llamar a diag
dos veces devuelve una matriz diagonal compuesta por los elementos de diagonal de la matriz original.
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
Argumentos de entrada
Elementos de diagonal, especificados como vector. Si v
es un vector con N
elementos, diag(v,k)
es una matriz cuadrada de orden N+abs(k)
.
diag([])
devuelve una matriz vacía, []
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
Soporte de números complejos: Sí
Matriz de entrada. diag
devuelve un error si ndims(A) > 2
.
diag([])
devuelve una matriz vacía, []
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
Soporte de números complejos: Sí
Número de diagonal, especificado como entero. k=0
representa la diagonal principal, k>0
está encima de la diagonal principal y k<0
está debajo de la diagonal principal.
En una matriz de m por n, k
está en el rango . Por ejemplo, en matrices con n mayor que m, la diagonal principal k=0
consta de los elementos con índices (1,1)
, (2,2)
, ..., (m,m)
. k=1
sobre la diagonal principal consta de los elementos con índices (1,2)
, (2,3)
, ..., (m,m+1)
. k=-1
debajo de la diagonal principal consta de los elementos con índices (2,1)
, (3,2)
, ..., (m,m-1)
.
Sugerencias
trace
de una matriz es igual asum(diag(A))
.
Capacidades ampliadas
Notas y limitaciones de uso:
Si proporciona
k
, debe ser un valor entero real y escalar.En las entradas de tamaño variable que son vectores de longitud variable (1 por : o : por 1),
diag
:Trata la entrada como un vector.
Devuelve una matriz con el vector de entrada en la diagonal especificada.
En las entradas de tamaño variable que no son vectores de longitud variable,
diag
:Trata la entrada como una matriz.
No admite entradas que son vectores en tiempo de ejecución.
Devuelve un vector de longitud variable.
Si la entrada es de tamaño variable (:m por :n) y tiene una forma de 0 por 0 en tiempo de ejecución, la salida es 0 por 1, no 0 por 0. Sin embargo, si la entrada es de un tamaño constante de 0 por 0, la salida es
[]
.En las entradas de tamaño variable que no son vectores de longitud variable (1 por : o : por 1),
diag
trata la entrada como una matriz de la que extraer un vector diagonal. Este comportamiento tiene lugar incluso si el arreglo de entrada es un vector en tiempo de ejecución. Para forzardiag
a crear una matriz a partir de entradas de tamaño variable que no son de 1 por : o de : por 1, utilice:diag(x(:))
en lugar dediag(x)
diag(x(:),k)
en lugar dediag(x,k)
Notas y limitaciones de uso:
Si proporciona
k
, debe ser un valor entero real y escalar.En las entradas de tamaño variable que son vectores de longitud variable (1 por : o : por 1),
diag
:Trata la entrada como un vector.
Devuelve una matriz con el vector de entrada en la diagonal especificada.
En las entradas de tamaño variable que no son vectores de longitud variable,
diag
:Trata la entrada como una matriz.
No admite entradas que son vectores en tiempo de ejecución.
Devuelve un vector de longitud variable.
Si la entrada es de tamaño variable (:m por :n) y tiene una forma de 0 por 0 en tiempo de ejecución, la salida es 0 por 1, no 0 por 0. Sin embargo, si la entrada es de un tamaño constante de 0 por 0, la salida es
[]
.En las entradas de tamaño variable que no son vectores de longitud variable (1 por : o : por 1),
diag
trata la entrada como una matriz de la que extraer un vector diagonal. Este comportamiento tiene lugar incluso si el arreglo de entrada es un vector en tiempo de ejecución. Para forzardiag
a crear una matriz a partir de entradas de tamaño variable que no son de 1 por : o de : por 1, utilice:diag(x(:))
en lugar dediag(x)
diag(x(:),k)
en lugar dediag(x,k)
Esta función es totalmente compatible con entornos basados en subprocesos. Para obtener más información, consulte Ejecutar funciones de MATLAB en entornos basados en subprocesos.
La función diag
es totalmente compatible con los arreglos de GPU. Para ejecutar la función en una GPU, especifique los datos de entrada como un gpuArray
(Parallel Computing Toolbox). Para obtener más información, consulte Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Esta función es totalmente compatible con los arreglos distribuidos. Para obtener más información, consulte Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Historial de versiones
Introducido antes de 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.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- 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)