Matriz diagonal de MATLAB

  1. Haga un array diagonal usando la función diag() en MATLAB
  2. Haga un array diagonal usando la función spdiags() en MATLAB

En este tutorial, discutiremos cómo hacer un array diagonal usando las funciones diag() y spdiags() en MATLAB.

Haga un array diagonal usando la función diag() en MATLAB

Para hacer un array diagonal o para obtener las entradas diagonales de un array, puede usar la función diag() en MATLAB. Por ejemplo, hagamos un array diagonal a partir de un vector dado. Vea el código a continuación.

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

Producción:

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

En el código anterior, hicimos un array diagonal 5x5 con las entradas diagonales almacenadas en la variable vector. La función diag() crea un array cuadrada dependiendo del número de elementos presentes dentro del vector dado. Si el número de elementos es 5, entonces la matriz diagonal será 5x5. También puede cambiar la posición de la diagonal usando un segundo argumento dentro de la función diag(). Si el segundo argumento es igual a 0, el vector se colocará en la diagonal principal. Si el segundo argumento es mayor que 0, el vector se colocará por encima de la diagonal principal. Si el segundo argumento es menor que 0, el vector se colocará debajo de la diagonal principal. Por ejemplo, coloquemos el vector sobre la diagonal principal. Vea el código a continuación.

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

Producción:

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

En el código anterior, creamos un array diagonal con los elementos colocados sobre la diagonal principal. Como puede ver, el tamaño de la diagonal es 6x6 ahora porque el vector se coloca por encima de la diagonal principal, y para garantizar que todos los elementos se coloquen dentro de la matriz, el tamaño de la matriz aumentó. También puede utilizar la función diag() para obtener las entradas diagonales de un array. Por ejemplo, obtengamos las entradas diagonales principales de un array dada. Vea el código a continuación.

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

Producción:

vector =

     1     2     3
     4     5     6
     7     8     9


diagonal =

     1
     5
     9

En el código anterior, usamos la función diag() para encontrar las entradas diagonales de la matriz dada, y puede ver que la función devolvió las entradas diagonales de la matriz dada. También puede obtener las entradas diagonales por encima y por debajo de la diagonal principal usando el segundo argumento dentro de la función diag() como usamos anteriormente para hacer la matriz diagonal con elementos por encima de la diagonal principal. Consulte este enlace para obtener más información sobre la función diag().

Haga un array diagonal usando la función spdiags() en MATLAB

Para hacer un array diagonal con más de una diagonal o para obtener todas las entradas diagonales de un array, puede usar la función spdiags() en MATLAB. El primer argumento pasado dentro de la función spdiags() son los valores, el segundo argumento son los lugares diagonales y el tercer y cuarto argumento es el tamaño de la matriz diagonal. Por ejemplo, hagamos un array tridiagonal a partir de un vector dado. Vea el código a continuación.

clc
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)

Producción:

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

En el código anterior, hicimos un array tridiagonal 5x5 con las entradas diagonales almacenadas dentro de las tres variables: v1, v2 y v3. Puede crear la matriz diagonal con tantos valores como desee. También puede cambiar los valores diagonales de un array dada usando la función springs(). Para hacer eso, pase los nuevos valores en el primer argumento, el lugar de los valores como el segundo argumento y la matriz cuyos valores desea cambiar como el tercer argumento. Por ejemplo, cambiemos las entradas diagonales principales de la matriz tridiagonal anterior. Vea el código a continuación.

clc
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)

Producción:

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

En el código anterior, cambiamos los valores de la diagonal principal de array1. Los valores se modifican y la nueva matriz se guarda en la variable array2. También puede extraer todas las entradas diagonales distintas de cero de un array dada utilizando la función spdaigs(). Por ejemplo, extraigamos las entradas distintas de cero de la matriz anterior. Vea el código a continuación.

clc
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)

Producción:

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

Los valores diagonales de la matriz dada se extraen y almacenan dentro de la variable diag_values. Los valores diagonales se almacenan en las columnas de la matriz. Las primeras entradas diagonales se almacenan en la primera columna y así sucesivamente. Consulte este enlace para obtener más información sobre la función diag().

Artículo relacionado - MATLAB Matrix

  • MATLAB iterar a través de matriz
  • Sumar elementos de una matriz en MATLAB